Skip to content

Commit

Permalink
fix typecheck
Browse files Browse the repository at this point in the history
  • Loading branch information
Bamieh committed Jun 24, 2020
1 parent 3c360f0 commit 3ecf97e
Show file tree
Hide file tree
Showing 23 changed files with 125 additions and 87 deletions.
80 changes: 41 additions & 39 deletions packages/kbn-telemetry-tools/src/cli/run_telemetry_extract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,45 +29,47 @@ import {
writeToFileTask,
} from '../tools/tasks';

run(
async ({ flags: {}, log }) => {
const list = new Listr([
{
title: 'Parsing .telemetryrc.json files',
task: () => new Listr(parseConfigsTask(), { exitOnError: true }),
},
{
title: 'Extracting Telemetry Collectors',
task: (context) => new Listr(extractCollectorsTask(context), { exitOnError: true }),
},
{
title: 'Generating Schema files',
task: (context) => new Listr(generateSchemasTask(context), { exitOnError: true }),
},
{
title: 'Writing to file',
task: (context) => new Listr(writeToFileTask(context), { exitOnError: true }),
},
]);
export function runTelemetryExtract() {
run(
async ({ flags: {}, log }) => {
const list = new Listr([
{
title: 'Parsing .telemetryrc.json files',
task: () => new Listr(parseConfigsTask(), { exitOnError: true }),
},
{
title: 'Extracting Telemetry Collectors',
task: (context) => new Listr(extractCollectorsTask(context), { exitOnError: true }),
},
{
title: 'Generating Schema files',
task: (context) => new Listr(generateSchemasTask(context), { exitOnError: true }),
},
{
title: 'Writing to file',
task: (context) => new Listr(writeToFileTask(context), { exitOnError: true }),
},
]);

try {
const context = createTaskContext();
await list.run(context);
} catch (error) {
process.exitCode = 1;
if (error instanceof ErrorReporter) {
error.errors.forEach((e: string | Error) => log.error(e));
} else {
log.error('Unhandled exception');
log.error(error);
try {
const context = createTaskContext();
await list.run(context);
} catch (error) {
process.exitCode = 1;
if (error instanceof ErrorReporter) {
error.errors.forEach((e: string | Error) => log.error(e));
} else {
log.error('Unhandled exception');
log.error(error);
}
}
}
process.exit();
},
{
flags: {
allowUnexpected: true,
guessTypesForUnexpectedFlags: true,
process.exit();
},
}
);
{
flags: {
allowUnexpected: true,
guessTypesForUnexpectedFlags: true,
},
}
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { ParsedUsageCollection } from '../ts_parser';

export const parsedExternallyDefinedCollector: ParsedUsageCollection[] = [
[
'packages/kbn-telemetry-tools/src/tools/__fixture__/externally_defined_collector.ts',
'src/fixtures/telemetry_collectors/externally_defined_collector.ts',
{
collectorName: 'from_variable_collector',
schema: {
Expand All @@ -44,7 +44,7 @@ export const parsedExternallyDefinedCollector: ParsedUsageCollection[] = [
},
],
[
'packages/kbn-telemetry-tools/src/tools/__fixture__/externally_defined_collector.ts',
'src/fixtures/telemetry_collectors/externally_defined_collector.ts',
{
collectorName: 'from_fn_collector',
schema: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { ParsedUsageCollection } from '../ts_parser';

export const parsedImportedSchemaCollector: ParsedUsageCollection[] = [
[
'packages/kbn-telemetry-tools/src/tools/__fixture__/imported_schema.ts',
'src/fixtures/telemetry_collectors/imported_schema.ts',
{
collectorName: 'with_imported_schema',
schema: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { ParsedUsageCollection } from '../ts_parser';

export const parsedImportedUsageInterface: ParsedUsageCollection[] = [
[
'packages/kbn-telemetry-tools/src/tools/__fixture__/imported_usage_interface.ts',
'src/fixtures/telemetry_collectors/imported_usage_interface.ts',
{
collectorName: 'imported_usage_interface_collector',
schema: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import { SyntaxKind } from 'typescript';
import { ParsedUsageCollection } from '../ts_parser';

export const parsedNestedCollector: ParsedUsageCollection = [
'packages/kbn-telemetry-tools/src/tools/__fixture__/nested_collector.ts',
'src/fixtures/telemetry_collectors/nested_collector.ts',
{
collectorName: 'my_nested_collector',
schema: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import { SyntaxKind } from 'typescript';
import { ParsedUsageCollection } from '../ts_parser';

export const parsedWorkingCollector: ParsedUsageCollection = [
'packages/kbn-telemetry-tools/src/tools/__fixture__/working_collector.ts',
'src/fixtures/telemetry_collectors/working_collector.ts',
{
collectorName: 'my_working_collector',
schema: {
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,29 @@

import * as _ from 'lodash';
import * as ts from 'typescript';
import mockSchema from './__fixture__/mock_schema.json';
import { parsedWorkingCollector } from './__fixture__/parsed_working_collector';
import { checkCompatibleTypeDescriptor, checkMatchingMapping } from './check_collector_integrity';
import * as path from 'path';
import { readFile } from 'fs';
import { promisify } from 'util';
const read = promisify(readFile);

async function parseJsonFile(relativePath: string) {
const schemaPath = path.resolve(__dirname, '__fixture__', relativePath);
const fileContent = await read(schemaPath, 'utf8');
return JSON.parse(fileContent);
}

describe('checkMatchingMapping', () => {
it('returns no diff on matching parsedCollections and stored mapping', () => {
it('returns no diff on matching parsedCollections and stored mapping', async () => {
const mockSchema = await parseJsonFile('mock_schema.json');
const diffs = checkMatchingMapping([parsedWorkingCollector], mockSchema);
expect(diffs).toEqual({});
});

describe('Collector change', () => {
it('returns diff on mismatching parsedCollections and stored mapping', () => {
it('returns diff on mismatching parsedCollections and stored mapping', async () => {
const mockSchema = await parseJsonFile('mock_schema.json');
const malformedParsedCollector = _.cloneDeep(parsedWorkingCollector);
const fieldMapping = { type: 'number' };
malformedParsedCollector[1].schema.value.flat = fieldMapping;
Expand All @@ -45,7 +56,8 @@ describe('checkMatchingMapping', () => {
});
});

it('returns diff on unknown parsedCollections', () => {
it('returns diff on unknown parsedCollections', async () => {
const mockSchema = await parseJsonFile('mock_schema.json');
const malformedParsedCollector = _.cloneDeep(parsedWorkingCollector);
const collectorName = 'New Collector in town!';
const collectorMapping = { some_usage: { type: 'number' } };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import { parseTelemetryRC } from './config';

describe('extractCollectors', () => {
it('extracts collectors given rc file', async () => {
const configRoot = path.join(__dirname, '__fixture__');
const configRoot = path.join(process.cwd(), 'src', 'fixtures', 'telemetry_collectors');
const tsConfig = ts.findConfigFile('./', ts.sys.fileExists, 'tsconfig.json');
if (!tsConfig) {
throw new Error('Could not find a valid tsconfig.json.');
Expand Down
14 changes: 12 additions & 2 deletions packages/kbn-telemetry-tools/src/tools/manage_schema.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,20 @@

import { generateMapping } from './manage_schema';
import { parsedWorkingCollector } from './__fixture__/parsed_working_collector';
import mockSchema from './__fixture__/mock_schema.json';
import * as path from 'path';
import { readFile } from 'fs';
import { promisify } from 'util';
const read = promisify(readFile);

async function parseJsonFile(relativePath: string) {
const schemaPath = path.resolve(__dirname, '__fixture__', relativePath);
const fileContent = await read(schemaPath, 'utf8');
return JSON.parse(fileContent);
}

describe('generateMapping', () => {
it('generates a mapping file', () => {
it('generates a mapping file', async () => {
const mockSchema = await parseJsonFile('mock_schema.json');
const result = generateMapping([parsedWorkingCollector]);
expect(result).toEqual(mockSchema);
});
Expand Down
10 changes: 9 additions & 1 deletion packages/kbn-telemetry-tools/src/tools/manage_schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,15 @@
*/

import { ParsedUsageCollection } from './ts_parser';
import { AllowedSchemaTypes } from '../../../../src/plugins/usage_collection/server';

export type AllowedSchemaTypes =
| 'keyword'
| 'text'
| 'number'
| 'boolean'
| 'long'
| 'date'
| 'float';

export function compatibleSchemaTypes(type: AllowedSchemaTypes) {
switch (type) {
Expand Down
8 changes: 7 additions & 1 deletion packages/kbn-telemetry-tools/src/tools/serializer.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,13 @@ import { getDescriptor, TelemetryKinds } from './serializer';
import { traverseNodes } from './ts_parser';

export function loadFixtureProgram(fixtureName: string) {
const fixturePath = path.resolve(__dirname, '__fixture__', `${fixtureName}.ts`);
const fixturePath = path.resolve(
process.cwd(),
'src',
'fixtures',
'telemetry_collectors',
`${fixtureName}.ts`
);
const tsConfig = ts.findConfigFile('./', ts.sys.fileExists, 'tsconfig.json');
if (!tsConfig) {
throw new Error('Could not find a valid tsconfig.json.');
Expand Down
8 changes: 7 additions & 1 deletion packages/kbn-telemetry-tools/src/tools/ts_parser.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,13 @@ import { parsedImportedUsageInterface } from './__fixture__/parsed_imported_usag
import { parsedImportedSchemaCollector } from './__fixture__/parsed_imported_schema';

export function loadFixtureProgram(fixtureName: string) {
const fixturePath = path.resolve(__dirname, '__fixture__', `${fixtureName}.ts`);
const fixturePath = path.resolve(
process.cwd(),
'src',
'fixtures',
'telemetry_collectors',
`${fixtureName}.ts`
);
const tsConfig = ts.findConfigFile('./', ts.sys.fileExists, 'tsconfig.json');
if (!tsConfig) {
throw new Error('Could not find a valid tsconfig.json.');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* under the License.
*/
import moment, { Moment } from 'moment';
import { MakeSchemaFrom } from '../../../../../src/plugins/usage_collection/server';
import { MakeSchemaFrom } from '../../plugins/usage_collection/server';

export interface Usage {
locale: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
import {
CollectorSet,
CollectorOptions,
} from '../../../../../src/plugins/usage_collection/server/collector';
import { loggingServiceMock } from '../../../../../src/core/server/mocks';
import { CollectorSet, CollectorOptions } from '../../plugins/usage_collection/server/collector';
import { loggerMock } from '../../core/server/logging/logger.mock';

const collectorSet = new CollectorSet({
logger: loggingServiceMock.createLogger(),
logger: loggerMock.create(),
maximumWaitTimeForAllCollectorsInS: 0,
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
import { CollectorSet } from '../../../../../src/plugins/usage_collection/server/collector';
import { loggingServiceMock } from '../../../../../src/core/server/mocks';
import { CollectorSet } from '../../plugins/usage_collection/server/collector';
import { loggerMock } from '../../core/server/logging/logger.mock';
import { externallyDefinedSchema } from './constants';

const { makeUsageCollector } = new CollectorSet({
logger: loggingServiceMock.createLogger(),
logger: loggerMock.create(),
maximumWaitTimeForAllCollectorsInS: 0,
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
import { CollectorSet } from '../../../../../src/plugins/usage_collection/server/collector';
import { loggingServiceMock } from '../../../../../src/core/server/mocks';
import { CollectorSet } from '../../plugins/usage_collection/server/collector';
import { loggerMock } from '../../core/server/logging/logger.mock';
import { Usage } from './constants';

const { makeUsageCollector } = new CollectorSet({
logger: loggingServiceMock.createLogger(),
logger: loggerMock.create(),
maximumWaitTimeForAllCollectorsInS: 0,
});

Expand Down
Loading

0 comments on commit 3ecf97e

Please sign in to comment.