Skip to content

Commit

Permalink
[7.x] Update getUsageForCollection (#71609) (#71645)
Browse files Browse the repository at this point in the history
  • Loading branch information
Bamieh authored Jul 14, 2020
1 parent 467dffa commit fbab088
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/plugins/telemetry_collection_manager/server/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import {
UsageStatsPayload,
StatsCollectionContext,
} from './types';

import { isClusterOptedIn } from './util';
import { encryptTelemetry } from './encryption';

interface TelemetryCollectionPluginsDepsSetup {
Expand Down Expand Up @@ -205,7 +205,9 @@ export class TelemetryCollectionManagerPlugin
return usageData;
}

return encryptTelemetry(usageData, { useProdKey: this.isDistributable });
return encryptTelemetry(usageData.filter(isClusterOptedIn), {
useProdKey: this.isDistributable,
});
}
} catch (err) {
this.logger.debug(
Expand Down
51 changes: 51 additions & 0 deletions src/plugins/telemetry_collection_manager/server/util.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

import { isClusterOptedIn } from './util';

const createMockClusterUsage = (plugins: any) => {
return {
stack_stats: {
kibana: { plugins },
},
};
};

describe('isClusterOptedIn', () => {
it('returns true if cluster has opt_in_status: true', () => {
const mockClusterUsage = createMockClusterUsage({ telemetry: { opt_in_status: true } });
const result = isClusterOptedIn(mockClusterUsage);
expect(result).toBe(true);
});
it('returns false if cluster has opt_in_status: false', () => {
const mockClusterUsage = createMockClusterUsage({ telemetry: { opt_in_status: false } });
const result = isClusterOptedIn(mockClusterUsage);
expect(result).toBe(false);
});
it('returns false if cluster has opt_in_status: undefined', () => {
const mockClusterUsage = createMockClusterUsage({ telemetry: {} });
const result = isClusterOptedIn(mockClusterUsage);
expect(result).toBe(false);
});
it('returns false if cluster stats is malformed', () => {
expect(isClusterOptedIn(createMockClusterUsage({}))).toBe(false);
expect(isClusterOptedIn({})).toBe(false);
expect(isClusterOptedIn(undefined)).toBe(false);
});
});
22 changes: 22 additions & 0 deletions src/plugins/telemetry_collection_manager/server/util.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

export const isClusterOptedIn = (clusterUsage: any): boolean => {
return clusterUsage?.stack_stats?.kibana?.plugins?.telemetry?.opt_in_status === true;
};

0 comments on commit fbab088

Please sign in to comment.