Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into np-migrate-maps-t…
Browse files Browse the repository at this point in the history
…elemetry
  • Loading branch information
Aaron Caldwell committed Feb 19, 2020
2 parents f59c79c + 29ac6fe commit 9faee3b
Show file tree
Hide file tree
Showing 375 changed files with 8,557 additions and 2,331 deletions.
9 changes: 8 additions & 1 deletion .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@
# Observability UIs
/x-pack/legacy/plugins/infra/ @elastic/logs-metrics-ui
/x-pack/plugins/infra/ @elastic/logs-metrics-ui
/x-pack/legacy/plugins/integrations_manager/ @elastic/epm
/x-pack/plugins/ingest_manager/ @elastic/ingest
/x-pack/legacy/plugins/ingest_manager/ @elastic/ingest
/x-pack/plugins/observability/ @elastic/logs-metrics-ui @elastic/apm-ui @elastic/uptime @elastic/ingest

# Machine Learning
Expand Down Expand Up @@ -177,3 +178,9 @@
/x-pack/plugins/searchprofiler/ @elastic/es-ui
/x-pack/legacy/plugins/snapshot_restore/ @elastic/es-ui
/x-pack/plugins/watcher/ @elastic/es-ui

# Endpoint
/x-pack/plugins/endpoint/ @elastic/endpoint-app-team
/x-pack/test/api_integration/apis/endpoint/ @elastic/endpoint-app-team
/x-pack/test/functional/apps/endpoint/ @elastic/endpoint-app-team
/x-pack/test/functional/es_archives/endpoint/ @elastic/endpoint-app-team
44 changes: 13 additions & 31 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -469,11 +469,11 @@ The following table outlines possible test file locations and how to invoke them

| Test runner | Test location | Runner command (working directory is kibana root) |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Jest | `src/**/*.test.js`<br>`src/**/*.test.ts` | `node scripts/jest -t regexp [test path]` |
| Jest (integration) | `**/integration_tests/**/*.test.js` | `node scripts/jest_integration -t regexp [test path]` |
| Jest | `src/**/*.test.js`<br>`src/**/*.test.ts` | `yarn test:jest -t regexp [test path]` |
| Jest (integration) | `**/integration_tests/**/*.test.js` | `yarn test:jest_integration -t regexp [test path]` |
| Mocha | `src/**/__tests__/**/*.js`<br>`!src/**/public/__tests__/*.js`<br>`packages/kbn-datemath/test/**/*.js`<br>`packages/kbn-dev-utils/src/**/__tests__/**/*.js`<br>`tasks/**/__tests__/**/*.js` | `node scripts/mocha --grep=regexp [test path]` |
| Functional | `test/*integration/**/config.js`<br>`test/*functional/**/config.js`<br>`test/accessibility/config.js` | `node scripts/functional_tests_server --config test/[directory]/config.js`<br>`node scripts/functional_test_runner --config test/[directory]/config.js --grep=regexp` |
| Karma | `src/**/public/__tests__/*.js` | `npm run test:dev` |
| Functional | `test/*integration/**/config.js`<br>`test/*functional/**/config.js`<br>`test/accessibility/config.js` | `yarn test:ftr:server --config test/[directory]/config.js`<br>`yarn test:ftr:runner --config test/[directory]/config.js --grep=regexp` |
| Karma | `src/**/public/__tests__/*.js` | `yarn test:karma:debug` |

For X-Pack tests located in `x-pack/` see [X-Pack Testing](x-pack/README.md#testing)

Expand All @@ -484,56 +484,38 @@ Test runner arguments:
Examples:
- Run the entire elasticsearch_service test suite:
```
node scripts/jest src/core/server/elasticsearch/elasticsearch_service.test.ts
yarn test:jest src/core/server/elasticsearch/elasticsearch_service.test.ts
```
- Run the jest test case whose description matches `stops both admin and data clients`:
```
node scripts/jest -t 'stops both admin and data clients' src/core/server/elasticsearch/elasticsearch_service.test.ts
yarn test:jest -t 'stops both admin and data clients' src/core/server/elasticsearch/elasticsearch_service.test.ts
```
- Run the api integration test case whose description matches the given string:
```
node scripts/functional_tests_server --config test/api_integration/config.js
node scripts/functional_test_runner --config test/api_integration/config.js --grep='should return 404 if id does not match any sample data sets'
yarn test:ftr:server --config test/api_integration/config.js
yarn test:ftr:runner --config test/api_integration/config.js --grep='should return 404 if id does not match any sample data sets'
```

### Debugging Unit Tests

The standard `yarn test` task runs several sub tasks and can take several minutes to complete, making debugging failures pretty painful. In order to ease the pain specialized tasks provide alternate methods for running the tests.

To execute both server and browser tests, but skip linting, use `yarn test:quick`.

```bash
yarn test:quick
```

Use `yarn test:mocha` when you want to run the mocha tests.

```bash
yarn test:mocha
```

When you'd like to execute individual server-side test files, you can use the command below. Note that this command takes care of configuring Mocha with Babel compilation for you, and you'll be better off avoiding a globally installed `mocha` package. This command is great for development and for quickly identifying bugs.

```bash
node scripts/mocha <file>
```

You could also add the `--debug` option so that `node` is run using the `--debug-brk` flag. You'll need to connect a remote debugger such as [`node-inspector`](https://github.com/node-inspector/node-inspector) to proceed in this mode.

```bash
node scripts/mocha --debug <file>
```

With `yarn test:browser`, you can run only the browser tests. Coverage reports are available for browser tests by running `yarn test:coverage`. You can find the results under the `coverage/` directory that will be created upon completion.
With `yarn test:karma`, you can run only the browser tests. Coverage reports are available for browser tests by running `yarn test:coverage`. You can find the results under the `coverage/` directory that will be created upon completion.

```bash
yarn test:browser
yarn test:karma
```

Using `yarn test:dev` initializes an environment for debugging the browser tests. Includes an dedicated instance of the kibana server for building the test bundle, and a karma server. When running this task the build is optimized for the first time and then a karma-owned instance of the browser is opened. Click the "debug" button to open a new tab that executes the unit tests.
Using `yarn test:karma:debug` initializes an environment for debugging the browser tests. Includes an dedicated instance of the kibana server for building the test bundle, and a karma server. When running this task the build is optimized for the first time and then a karma-owned instance of the browser is opened. Click the "debug" button to open a new tab that executes the unit tests.

```bash
yarn test:dev
yarn test:karma:debug
```

In the screenshot below, you'll notice the URL is `localhost:9876/debug.html`. You can append a `grep` query parameter to this URL and set it to a string value which will be used to exclude tests which don't match. For example, if you changed the URL to `localhost:9876/debug.html?query=my test` and then refreshed the browser, you'd only see tests run which contain "my test" in the test description.
Expand All @@ -549,7 +531,7 @@ To run the tests for just your particular plugin run the following command from

```bash
yarn test:mocha
yarn test:browser --dev # remove the --dev flag to run them once and close
yarn test:karma:debug # remove the debug flag to run them once and close
```

### Automated Accessibility Testing
Expand Down
22 changes: 9 additions & 13 deletions examples/demo_search/public/demo_search_strategy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,7 @@
*/

import { Observable } from 'rxjs';
import {
ISearchContext,
SYNC_SEARCH_STRATEGY,
ISearchGeneric,
} from '../../../src/plugins/data/public';
import { ISearchContext, SYNC_SEARCH_STRATEGY } from '../../../src/plugins/data/public';
import { TSearchStrategyProvider, ISearchStrategy } from '../../../src/plugins/data/public';

import { DEMO_SEARCH_STRATEGY, IDemoResponse } from '../common';
Expand Down Expand Up @@ -54,15 +50,15 @@ import { DEMO_SEARCH_STRATEGY, IDemoResponse } from '../common';
* @param search - a search function to access other strategies that have already been registered.
*/
export const demoClientSearchStrategyProvider: TSearchStrategyProvider<typeof DEMO_SEARCH_STRATEGY> = (
context: ISearchContext,
search: ISearchGeneric
context: ISearchContext
): ISearchStrategy<typeof DEMO_SEARCH_STRATEGY> => {
const syncStrategyProvider = context.getSearchStrategy(SYNC_SEARCH_STRATEGY);
const { search } = syncStrategyProvider(context);
return {
search: (request, options) =>
search(
{ ...request, serverStrategy: DEMO_SEARCH_STRATEGY },
options,
SYNC_SEARCH_STRATEGY
) as Observable<IDemoResponse>,
search: (request, options) => {
return search({ ...request, serverStrategy: DEMO_SEARCH_STRATEGY }, options) as Observable<
IDemoResponse
>;
},
};
};
6 changes: 2 additions & 4 deletions examples/demo_search/public/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,10 @@
* under the License.
*/

import { PluginInitializer, PluginInitializerContext } from 'kibana/public';
import { PluginInitializer } from 'kibana/public';

import { DemoDataPlugin } from './plugin';

export { DEMO_SEARCH_STRATEGY } from '../common';

export const plugin: PluginInitializer<void, void> = (
initializerContext: PluginInitializerContext
) => new DemoDataPlugin(initializerContext);
export const plugin: PluginInitializer<void, void> = () => new DemoDataPlugin();
4 changes: 1 addition & 3 deletions examples/demo_search/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*/

import { DataPublicPluginSetup } from '../../../src/plugins/data/public';
import { Plugin, CoreSetup, PluginInitializerContext } from '../../../src/core/public';
import { Plugin, CoreSetup } from '../../../src/core/public';
import { DEMO_SEARCH_STRATEGY } from '../common';
import { demoClientSearchStrategyProvider } from './demo_search_strategy';
import { IDemoRequest, IDemoResponse } from '../common';
Expand Down Expand Up @@ -47,10 +47,8 @@ declare module '../../../src/plugins/data/public' {
}

export class DemoDataPlugin implements Plugin {
constructor(private initializerContext: PluginInitializerContext) {}
public setup(core: CoreSetup, deps: DemoDataSearchSetupDependencies) {
deps.data.search.registerSearchStrategyProvider(
this.initializerContext.opaqueId,
DEMO_SEARCH_STRATEGY,
demoClientSearchStrategyProvider
);
Expand Down
21 changes: 13 additions & 8 deletions examples/search_explorer/public/application.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,13 @@ import {
EuiSideNav,
} from '@elastic/eui';

import { AppMountContext, AppMountParameters } from '../../../src/core/public';
import { AppMountParameters, CoreStart } from '../../../src/core/public';
import { EsSearchTest } from './es_strategy';
import { Page } from './page';
import { DemoStrategy } from './demo_strategy';
import { DocumentationPage } from './documentation';
import { SearchApiPage } from './search_api';
import { AppPluginStartDependencies, SearchBarComponentParams } from './types';

const Home = () => <DocumentationPage />;

Expand All @@ -44,7 +45,7 @@ interface PageDef {
}

type NavProps = RouteComponentProps & {
navigateToApp: AppMountContext['core']['application']['navigateToApp'];
navigateToApp: CoreStart['application']['navigateToApp'];
pages: PageDef[];
};

Expand All @@ -71,7 +72,7 @@ const Nav = withRouter(({ history, navigateToApp, pages }: NavProps) => {

const buildPage = (page: PageDef) => <Page title={page.title}>{page.component}</Page>;

const SearchApp = ({ basename, context }: { basename: string; context: AppMountContext }) => {
const SearchApp = ({ basename, data, application }: SearchBarComponentParams) => {
const pages: PageDef[] = [
{
id: 'home',
Expand All @@ -86,12 +87,12 @@ const SearchApp = ({ basename, context }: { basename: string; context: AppMountC
{
title: 'ES search strategy',
id: 'esSearch',
component: <EsSearchTest search={context.search!.search} />,
component: <EsSearchTest search={data.search.search} />,
},
{
title: 'Demo search strategy',
id: 'demoSearch',
component: <DemoStrategy search={context.search!.search} />,
component: <DemoStrategy search={data.search.search} />,
},
];

Expand All @@ -103,7 +104,7 @@ const SearchApp = ({ basename, context }: { basename: string; context: AppMountC
<Router basename={basename}>
<EuiPage>
<EuiPageSideBar>
<Nav navigateToApp={context.core.application.navigateToApp} pages={pages} />
<Nav navigateToApp={application.navigateToApp} pages={pages} />
</EuiPageSideBar>
<Route path="/" exact component={Home} />
{routes}
Expand All @@ -113,10 +114,14 @@ const SearchApp = ({ basename, context }: { basename: string; context: AppMountC
};

export const renderApp = (
context: AppMountContext,
coreStart: CoreStart,
deps: AppPluginStartDependencies,
{ appBasePath, element }: AppMountParameters
) => {
ReactDOM.render(<SearchApp basename={appBasePath} context={context} />, element);
ReactDOM.render(
<SearchApp basename={appBasePath} data={deps.data} application={coreStart.application} />,
element
);

return () => ReactDOM.unmountComponentAtNode(element);
};
7 changes: 1 addition & 6 deletions examples/search_explorer/public/es_strategy.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ import serverPlugin from '!!raw-loader!./../../../src/plugins/data/server/search
// @ts-ignore
import serverStrategy from '!!raw-loader!./../../../src/plugins/data/server/search/es_search/es_search_strategy';

// @ts-ignore
import publicPlugin from '!!raw-loader!./../../../src/plugins/data/public/search/es_search/es_search_service';
// @ts-ignore
import publicStrategy from '!!raw-loader!./../../../src/plugins/data/public/search/es_search/es_search_strategy';

Expand Down Expand Up @@ -125,10 +123,7 @@ export class EsSearchTest extends React.Component<Props, State> {
codeSections={[
{
title: 'Public',
code: [
{ description: 'es_search_service.ts', snippet: publicPlugin },
{ description: 'es_search_strategy.ts', snippet: publicStrategy },
],
code: [{ description: 'es_search_strategy.ts', snippet: publicStrategy }],
},
{
title: 'Server',
Expand Down
16 changes: 6 additions & 10 deletions examples/search_explorer/public/plugin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,18 @@
* under the License.
*/

import { Plugin, CoreSetup } from 'kibana/public';
import { ISearchAppMountContext } from '../../../src/plugins/data/public';
import { Plugin, CoreSetup, AppMountParameters } from 'kibana/public';
import { AppPluginStartDependencies } from './types';

declare module 'kibana/public' {
interface AppMountContext {
search?: ISearchAppMountContext;
}
}
export class SearchExplorerPlugin implements Plugin {
public setup(core: CoreSetup) {
public setup(core: CoreSetup<AppPluginStartDependencies>) {
core.application.register({
id: 'searchExplorer',
title: 'Search Explorer',
async mount(context, params) {
async mount(params: AppMountParameters) {
const [coreStart, depsStart] = await core.getStartServices();
const { renderApp } = await import('./application');
return renderApp(context, params);
return renderApp(coreStart, depsStart, params);
},
});
}
Expand Down
18 changes: 0 additions & 18 deletions examples/search_explorer/public/search_api.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,6 @@
import React from 'react';
import { GuideSection } from './guide_section';

// @ts-ignore
import publicSetupContract from '!!raw-loader!./../../../src/plugins/data/public/search/i_search_setup';
// @ts-ignore
import publicSearchStrategy from '!!raw-loader!./../../../src/plugins/data/public/search/i_search_strategy';
// @ts-ignore
import publicSearch from '!!raw-loader!./../../../src/plugins/data/public/search/i_search';
// @ts-ignore
Expand All @@ -31,8 +27,6 @@ import publicPlugin from '!!raw-loader!./../../../src/plugins/data/public/search
// @ts-ignore
import serverSetupContract from '!!raw-loader!./../../../src/plugins/data/server/search/i_search_setup';
// @ts-ignore
import serverSearchStrategy from '!!raw-loader!./../../../src/plugins/data/server/search/i_search_strategy';
// @ts-ignore
import serverSearch from '!!raw-loader!./../../../src/plugins/data/server/search/i_search';
// @ts-ignore
import serverPlugin from '!!raw-loader!./../../../src/plugins/data/server/search/search_service';
Expand All @@ -47,18 +41,10 @@ export const SearchApiPage = () => (
description: 'search_service.ts',
snippet: publicPlugin,
},
{
description: `i_search_setup.ts`,
snippet: publicSetupContract,
},
{
description: 'i_search',
snippet: publicSearch,
},
{
description: 'i_search_strategy',
snippet: publicSearchStrategy,
},
],
},
{
Expand All @@ -76,10 +62,6 @@ export const SearchApiPage = () => (
description: 'i_search',
snippet: serverSearch,
},
{
description: 'i_search_strategy',
snippet: serverSearchStrategy,
},
],
},
]}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,15 @@
* under the License.
*/

import { ISearchGeneric } from './i_search';
import { CoreStart } from 'kibana/public';
import { DataPublicPluginStart } from '../../../src/plugins/data/public';

export interface ISearchAppMountContext {
search: ISearchGeneric;
export interface AppPluginStartDependencies {
data: DataPublicPluginStart;
}

export interface SearchBarComponentParams {
application: CoreStart['application'];
basename: string;
data: DataPublicPluginStart;
}
7 changes: 0 additions & 7 deletions examples/ui_actions_explorer/public/plugin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

import { Plugin, CoreSetup, AppMountParameters } from 'kibana/public';
import { UiActionsStart, UiActionsSetup } from 'src/plugins/ui_actions/public';
import { ISearchAppMountContext } from '../../../src/plugins/data/public';
import {
PHONE_TRIGGER,
USER_TRIGGER,
Expand All @@ -38,12 +37,6 @@ import {
SHOWCASE_PLUGGABILITY_ACTION,
} from './actions/actions';

declare module 'kibana/public' {
interface AppMountContext {
search?: ISearchAppMountContext;
}
}

interface StartDeps {
uiActions: UiActionsStart;
}
Expand Down
Loading

0 comments on commit 9faee3b

Please sign in to comment.