use prefix for ES indexes for tests (#30288)
Co-authored-by: Kevin Heis <heiskr@users.noreply.github.com>
This commit is contained in:
@@ -43,6 +43,20 @@ const legacyEnterpriseServerVersions = Object.fromEntries(
|
|||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
|
function getIndexPrefix() {
|
||||||
|
// This logic is mirrored in the scripts we use before running tests
|
||||||
|
// In particular, see the `index-test-fixtures` npm script.
|
||||||
|
// That's expected to be run before CI and local jest testing.
|
||||||
|
// The reason we have a deliberately different index name (by prefix)
|
||||||
|
// for testing compared to regular operation is to make it convenient
|
||||||
|
// for engineers working on local manual testing *and* automated
|
||||||
|
// testing without have to re-index different content (e.g. fixtures
|
||||||
|
// vs real content) on the same index name.
|
||||||
|
if (process.env.NODE_ENV === 'test') return 'tests_'
|
||||||
|
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
|
||||||
function convertLegacyVersionName(version) {
|
function convertLegacyVersionName(version) {
|
||||||
// In the olden days we used to use `?version=3.5&...` but we decided
|
// In the olden days we used to use `?version=3.5&...` but we decided
|
||||||
// that's ambiguous and it should be `ghes-3.5` instead.
|
// that's ambiguous and it should be `ghes-3.5` instead.
|
||||||
@@ -87,7 +101,10 @@ router.get(
|
|||||||
return res.status(200).json([])
|
return res.status(200).json([])
|
||||||
}
|
}
|
||||||
|
|
||||||
const indexName = `github-docs-${convertLegacyVersionName(version)}-${language}`
|
const indexName = `${getIndexPrefix()}github-docs-${convertLegacyVersionName(
|
||||||
|
version
|
||||||
|
)}-${language}`
|
||||||
|
|
||||||
const hits = []
|
const hits = []
|
||||||
try {
|
try {
|
||||||
const searchResults = await getSearchResults({
|
const searchResults = await getSearchResults({
|
||||||
@@ -205,7 +222,7 @@ const validationMiddleware = (req, res, next) => {
|
|||||||
|
|
||||||
const version = versionAliases[search.version] || allVersions[search.version].miscVersionName
|
const version = versionAliases[search.version] || allVersions[search.version].miscVersionName
|
||||||
|
|
||||||
search.indexName = `github-docs-${version}-${search.language}` // github-docs-ghes-3.5-en
|
search.indexName = `${getIndexPrefix()}github-docs-${version}-${search.language}` // github-docs-ghes-3.5-en
|
||||||
|
|
||||||
req.search = search
|
req.search = search
|
||||||
return next()
|
return next()
|
||||||
|
|||||||
@@ -183,7 +183,7 @@
|
|||||||
"build": "next build",
|
"build": "next build",
|
||||||
"debug": "cross-env NODE_ENV=development ENABLED_LANGUAGES='en,ja' nodemon --inspect server.js",
|
"debug": "cross-env NODE_ENV=development ENABLED_LANGUAGES='en,ja' nodemon --inspect server.js",
|
||||||
"dev": "cross-env npm start",
|
"dev": "cross-env npm start",
|
||||||
"index-test-fixtures": "node script/search/index-elasticsearch.js -s tests/content/fixtures/search-indexes -l en -V ghae -V dotcom",
|
"index-test-fixtures": "node script/search/index-elasticsearch.js -s tests/content/fixtures/search-indexes -l en -V ghae -V dotcom --index-prefix tests",
|
||||||
"lint": "eslint '**/*.{js,mjs,ts,tsx}'",
|
"lint": "eslint '**/*.{js,mjs,ts,tsx}'",
|
||||||
"lint-translation": "cross-env NODE_OPTIONS=--experimental-vm-modules TEST_TRANSLATION=true jest tests/linting/lint-files.js",
|
"lint-translation": "cross-env NODE_OPTIONS=--experimental-vm-modules TEST_TRANSLATION=true jest tests/linting/lint-files.js",
|
||||||
"prepare": "husky install",
|
"prepare": "husky install",
|
||||||
|
|||||||
@@ -13,11 +13,15 @@ import path from 'path'
|
|||||||
import { Client } from '@elastic/elasticsearch'
|
import { Client } from '@elastic/elasticsearch'
|
||||||
import { program, Option } from 'commander'
|
import { program, Option } from 'commander'
|
||||||
import chalk from 'chalk'
|
import chalk from 'chalk'
|
||||||
|
import dotenv from 'dotenv'
|
||||||
|
|
||||||
import { languageKeys } from '../../lib/languages.js'
|
import { languageKeys } from '../../lib/languages.js'
|
||||||
import { allVersions } from '../../lib/all-versions.js'
|
import { allVersions } from '../../lib/all-versions.js'
|
||||||
import { decompress } from '../../lib/search/compress.js'
|
import { decompress } from '../../lib/search/compress.js'
|
||||||
|
|
||||||
|
// Now you can optionally have set the ELASTICSEARCH_URL in your .env file.
|
||||||
|
dotenv.config()
|
||||||
|
|
||||||
// Create an object that maps the "short name" of a version to
|
// Create an object that maps the "short name" of a version to
|
||||||
// all information about it. E.g
|
// all information about it. E.g
|
||||||
//
|
//
|
||||||
@@ -61,6 +65,7 @@ program
|
|||||||
'-s, --source-directory <DIRECTORY>',
|
'-s, --source-directory <DIRECTORY>',
|
||||||
`Directory where records files are (default ${DEFAULT_SOURCE_DIRECTORY})`
|
`Directory where records files are (default ${DEFAULT_SOURCE_DIRECTORY})`
|
||||||
)
|
)
|
||||||
|
.option('-p, --index-prefix <prefix>', 'Index string to put before index name')
|
||||||
.parse(process.argv)
|
.parse(process.argv)
|
||||||
|
|
||||||
main(program.opts())
|
main(program.opts())
|
||||||
@@ -122,10 +127,13 @@ async function main(opts) {
|
|||||||
console.log(`Indexing on languages ${chalk.bold(languages.join(', '))}`)
|
console.log(`Indexing on languages ${chalk.bold(languages.join(', '))}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const { indexPrefix } = opts
|
||||||
|
const prefix = indexPrefix ? `${indexPrefix}_` : ''
|
||||||
|
|
||||||
for (const language of languages) {
|
for (const language of languages) {
|
||||||
for (const versionKey of versionKeys) {
|
for (const versionKey of versionKeys) {
|
||||||
console.log(chalk.yellow(`Indexing ${chalk.bold(versionKey)} in ${chalk.bold(language)}`))
|
console.log(chalk.yellow(`Indexing ${chalk.bold(versionKey)} in ${chalk.bold(language)}`))
|
||||||
const indexName = `github-docs-${versionKey}-${language}`
|
const indexName = `${prefix}github-docs-${versionKey}-${language}`
|
||||||
|
|
||||||
console.time(`Indexing ${indexName}`)
|
console.time(`Indexing ${indexName}`)
|
||||||
await indexVersion(client, indexName, versionKey, language, sourceDirectory, verbose)
|
await indexVersion(client, indexName, versionKey, language, sourceDirectory, verbose)
|
||||||
|
|||||||
Reference in New Issue
Block a user