/
scylla.test.js
75 lines (69 loc) · 2.2 KB
/
scylla.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
const fs = require('fs');
const { getProjectResultsFile } = require('../desktop/store');
const {
DatabasePanelInfo,
Encrypt,
DatabaseConnectorInfo,
} = require('../shared/state');
const { withSavedPanels, RUNNERS } = require('../desktop/panel/testutil');
const { withDocker } = require('./docker');
describe('basic cassandra/scylladb tests', () => {
test(`runs basic cql query`, async () => {
await withDocker(
{
image: 'docker.io/scylladb/scylla:5.1',
port: '9042',
program: [
'--smp',
'1',
'--authenticator',
'PasswordAuthenticator',
'--broadcast-address',
'127.0.0.1',
'--listen-address',
'0.0.0.0',
'--broadcast-rpc-address',
'127.0.0.1',
],
cmds: [
`cqlsh -u cassandra -p cassandra -e "CREATE KEYSPACE test WITH REPLICATION = {'class': 'SimpleStrategy', 'replication_factor': 1};"`,
`cqlsh -u cassandra -p cassandra -e "CREATE ROLE test WITH PASSWORD = 'test' AND LOGIN = true AND SUPERUSER = true;"`,
],
},
async () => {
const connectors = [
new DatabaseConnectorInfo({
type: 'scylla',
database: 'test',
username: 'cassandra',
password_encrypt: new Encrypt('cassandra'),
}),
];
const dp = new DatabasePanelInfo();
dp.database.connectorId = connectors[0].id;
dp.content = 'select broadcast_address from system.local;';
let finished = false;
const panels = [dp];
await withSavedPanels(
panels,
async (project) => {
const panelValueBuffer = fs.readFileSync(
getProjectResultsFile(project.projectName) + dp.id
);
const v = JSON.parse(panelValueBuffer.toString());
expect(v).toStrictEqual([{ broadcast_address: '127.0.0.1' }]);
finished = true;
},
{
evalPanels: true,
connectors,
subprocessName: RUNNERS.find((r) => r?.go),
}
);
if (!finished) {
throw new Error('Callback did not finish');
}
}
);
}, 360_000);
});