Skip to content

Commit 06bb00e

Browse files
committed
fix arm binary downlaod issue
:q
1 parent ac29b53 commit 06bb00e

File tree

7 files changed

+120
-17
lines changed

7 files changed

+120
-17
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@geek-fun/jest-search",
3-
"version": "1.0.3",
3+
"version": "1.0.4",
44
"main": "dist/src/index.js",
55
"types": "dist/src/index.d.ts",
66
"description": "Jest preset for running tests with local search platform",

src/engine.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ let engineOptions: ConfiguredOptions;
2626
let engineClient: EngineClient;
2727

2828
const prepareEngine = async (engine: EngineType, version: string, binaryLocation: string) => {
29-
const url = await getEngineBinaryURL(engine, version);
29+
const url = getEngineBinaryURL(engine, version);
3030

3131
return await download(url, binaryLocation, engine, version);
3232
};

src/utils.ts

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { access, constants } from 'fs';
22
import { promisify } from 'util';
3-
import execa from 'execa';
43
import { debug } from './debug';
54
import { Artifacts, EngineType } from './constants';
65
import { extract } from 'tar-fs';
@@ -9,6 +8,7 @@ import fetch from 'node-fetch';
98
import { pipeline } from 'stream';
109
import { EngineClient } from './engineClient';
1110
import { HttpsProxyAgent } from 'https-proxy-agent';
11+
import * as os from 'os';
1212

1313
export const waitForLocalhost = async (engineClient: EngineClient, retries = 30) => {
1414
await new Promise((resolve) => setTimeout(() => resolve(0), 2000));
@@ -34,9 +34,9 @@ export const isFileExists = async (path: string): Promise<boolean> => {
3434
}
3535
};
3636

37-
export const platform = async () => {
38-
const { stdout: sysName } = await execa('uname', ['-s']);
39-
const { stdout: arch } = await execa('uname', ['-m']);
37+
const platform = () => {
38+
const arch = os.arch().toString();
39+
const sysName = os.platform().toString();
4040
debug(`checking platform uname: ${sysName} ${arch}`);
4141
return { sysName: sysName.toLowerCase(), arch: arch.toLowerCase() };
4242
};
@@ -84,19 +84,24 @@ export const download = async (url: string, dir: string, engine: EngineType, ver
8484
);
8585
};
8686

87-
export const getEngineBinaryURL = async (engine: EngineType, version: string) => {
88-
const { sysName, arch } = await platform();
87+
export const getEngineBinaryURL = (engine: EngineType, version: string) => {
88+
const { sysName, arch } = platform();
8989
const engines: {
9090
[engineType: string]: () => string;
9191
} = {
92-
[EngineType.ELASTICSEARCH]: () =>
93-
parseInt(version.charAt(0)) >= 7
94-
? `${Artifacts.ES}-${version}-${sysName}-${arch}.tar.gz`
95-
: `${Artifacts.ES}-${version}.tar.gz`,
92+
[EngineType.ELASTICSEARCH]: () => {
93+
const archName = arch === 'arm64' ? 'aarch64' : 'x86_64';
94+
return parseInt(version.charAt(0)) >= 7
95+
? `${Artifacts.ES}-${version}-${sysName}-${archName}.tar.gz`
96+
: `${Artifacts.ES}-${version}.tar.gz`;
97+
},
9698
[EngineType.OPENSEARCH]: () =>
97-
`${Artifacts.OS}/${version}/opensearch-${version}-linux-${arch.replace('86_', '')}.tar.gz`,
98-
[EngineType.ZINCSEARCH]: () =>
99-
`${Artifacts.ZINC}/v${version}/zincsearch_${version}_${sysName}_${arch}.tar.gz`,
99+
`${Artifacts.OS}/${version}/opensearch-${version}-linux-${arch}.tar.gz`,
100+
101+
[EngineType.ZINCSEARCH]: () => {
102+
const archName = arch === 'x64' ? 'x86_64' : arch;
103+
return `${Artifacts.ZINC}/v${version}/zincsearch_${version}_${sysName}_${archName}.tar.gz`;
104+
},
100105
};
101106

102107
return engines[engine]();

tests/utils.test.ts

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
import { getEngineBinaryURL } from '../src/utils';
2+
import { EngineType } from '../src';
3+
4+
const mockedPlatform = jest.fn();
5+
const mockedArch = jest.fn();
6+
7+
jest.mock('os', () => ({
8+
...jest.requireActual('os'),
9+
platform: () => mockedPlatform(),
10+
arch: () => mockedArch(),
11+
}));
12+
13+
const platforms = [
14+
{
15+
engine: EngineType.ELASTICSEARCH,
16+
version: '8.9.0',
17+
platform: 'darwin',
18+
arch: 'x64',
19+
URL: 'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.9.0-darwin-x86_64.tar.gz',
20+
},
21+
{
22+
engine: EngineType.ELASTICSEARCH,
23+
version: '8.9.0',
24+
platform: 'darwin',
25+
arch: 'arm64',
26+
URL: 'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.9.0-darwin-aarch64.tar.gz',
27+
},
28+
{
29+
engine: EngineType.ELASTICSEARCH,
30+
version: '8.9.0',
31+
platform: 'linux',
32+
arch: 'x64',
33+
URL: 'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.9.0-linux-x86_64.tar.gz',
34+
},
35+
{
36+
engine: EngineType.ELASTICSEARCH,
37+
version: '8.9.0',
38+
platform: 'linux',
39+
arch: 'arm64',
40+
URL: 'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.9.0-linux-aarch64.tar.gz',
41+
},
42+
{
43+
engine: EngineType.ELASTICSEARCH,
44+
version: '6.8.23',
45+
platform: 'darwin',
46+
arch: 'x64',
47+
URL: 'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.23.tar.gz',
48+
},
49+
{
50+
engine: EngineType.ELASTICSEARCH,
51+
version: '8.9.0',
52+
platform: 'linux',
53+
arch: 'arm64',
54+
URL: 'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.9.0-linux-aarch64.tar.gz',
55+
},
56+
{
57+
engine: EngineType.OPENSEARCH,
58+
version: '2.9.0',
59+
platform: 'darwin',
60+
arch: 'x64',
61+
URL: 'https://artifacts.opensearch.org/releases/bundle/opensearch/2.9.0/opensearch-2.9.0-linux-x64.tar.gz',
62+
},
63+
{
64+
engine: EngineType.OPENSEARCH,
65+
version: '2.9.0',
66+
platform: 'linux',
67+
arch: 'arm64',
68+
URL: 'https://artifacts.opensearch.org/releases/bundle/opensearch/2.9.0/opensearch-2.9.0-linux-arm64.tar.gz',
69+
},
70+
{
71+
engine: EngineType.ZINCSEARCH,
72+
version: '0.4.7',
73+
platform: 'darwin',
74+
arch: 'x64',
75+
URL: 'https://github.com/zincsearch/zincsearch/releases/download/v0.4.7/zincsearch_0.4.7_darwin_x86_64.tar.gz',
76+
},
77+
{
78+
engine: EngineType.ZINCSEARCH,
79+
version: '0.4.7',
80+
platform: 'linux',
81+
arch: 'arm64',
82+
URL: 'https://github.com/zincsearch/zincsearch/releases/download/v0.4.7/zincsearch_0.4.7_linux_arm64.tar.gz',
83+
},
84+
];
85+
86+
describe('unit test for utils', () => {
87+
describe('unit test for getEngineBinaryURL', () => {
88+
platforms.forEach(({ engine, version, platform, arch, URL }) => {
89+
it(`should return ${engine} ${version} ${platform} ${arch} download location`, () => {
90+
mockedPlatform.mockReturnValue(platform);
91+
mockedArch.mockReturnValue(arch);
92+
93+
const binaryURL = getEngineBinaryURL(engine, version);
94+
expect(binaryURL).toEqual(URL);
95+
});
96+
});
97+
});
98+
});
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)