mirror of
https://github.com/lingble/clickhouse.git
synced 2025-11-22 22:04:58 +00:00
Update test
This commit is contained in:
@@ -92,5 +92,5 @@
|
|||||||
"test": "mocha --bail --timeout 60000 --slow 5000"
|
"test": "mocha --bail --timeout 60000 --slow 5000"
|
||||||
},
|
},
|
||||||
"types": "index.d.ts",
|
"types": "index.d.ts",
|
||||||
"version": "2.0.1"
|
"version": "2.0.2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,23 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
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
|
||||||
|
vypgPujlakjsqPUbsl0CU0ibHQ==
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
-----BEGIN PRIVATE KEY-----
|
-----BEGIN PRIVATE KEY-----
|
||||||
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
|
||||||
MAGYdH/KB1lZQa6qp+pmiV4=
|
WkN4m2opC8z7GxpjJvRO
|
||||||
-----END PRIVATE KEY-----
|
-----END PRIVATE KEY-----
|
||||||
|
|||||||
117
test/test.js
117
test/test.js
@@ -158,7 +158,6 @@ describe('Select', () => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
it('select with external', async () => {
|
it('select with external', async () => {
|
||||||
const result = await clickhouse.query(
|
const result = await clickhouse.query(
|
||||||
'SELECT count(*) AS count FROM temp_table',
|
'SELECT count(*) AS count FROM temp_table',
|
||||||
@@ -178,6 +177,36 @@ describe('Select', () => {
|
|||||||
expect(result[0].count).to.be(rowCount);
|
expect(result[0].count).to.be(rowCount);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('select with external && join', async () => {
|
||||||
|
const result = await clickhouse.query(
|
||||||
|
`
|
||||||
|
SELECT
|
||||||
|
*
|
||||||
|
FROM system.numbers AS i
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT
|
||||||
|
number
|
||||||
|
FROM system.numbers
|
||||||
|
WHERE number IN temp_table
|
||||||
|
LIMIT 10
|
||||||
|
) AS n ON(n.number = i.number)
|
||||||
|
LIMIT 100
|
||||||
|
`,
|
||||||
|
{
|
||||||
|
external: [
|
||||||
|
{
|
||||||
|
name: 'temp_table',
|
||||||
|
data: _.range(0, 10),
|
||||||
|
structure: 'i UInt64'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
).toPromise();
|
||||||
|
|
||||||
|
expect(result).to.be.ok();
|
||||||
|
expect(result).to.have.length(100);
|
||||||
|
});
|
||||||
|
|
||||||
it('catch error', async () => {
|
it('catch error', async () => {
|
||||||
try {
|
try {
|
||||||
await clickhouse.query(sql + '1').toPromise();
|
await clickhouse.query(sql + '1').toPromise();
|
||||||
@@ -271,6 +300,8 @@ describe('session', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// You can use all settings from request library (https://github.com/request/request#tlsssl-protocol)
|
// You can use all settings from request library (https://github.com/request/request#tlsssl-protocol)
|
||||||
|
// Generate ssl file with:
|
||||||
|
// sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout test/cert/server.key -out test/cert/server.crt
|
||||||
describe('TLS/SSL Protocol', () => {
|
describe('TLS/SSL Protocol', () => {
|
||||||
it('use TLS/SSL Protocol', async () => {
|
it('use TLS/SSL Protocol', async () => {
|
||||||
let server = null;
|
let server = null;
|
||||||
@@ -631,37 +662,6 @@ describe('Exec system queries', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
describe('Abort query', () => {
|
|
||||||
it('exec & abort', cb => {
|
|
||||||
const $q = clickhouse.query(`SELECT number FROM system.numbers LIMIT ${rowCount}`);
|
|
||||||
|
|
||||||
let i = 0,
|
|
||||||
error = null;
|
|
||||||
|
|
||||||
const stream = $q.stream()
|
|
||||||
.on('data', () => {
|
|
||||||
++i;
|
|
||||||
|
|
||||||
if (i > minRnd) {
|
|
||||||
stream.pause();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.on('error', err => error = err)
|
|
||||||
.on('close', () => {
|
|
||||||
expect(error).to.not.be.ok();
|
|
||||||
expect(i).to.be.below(rowCount);
|
|
||||||
|
|
||||||
cb();
|
|
||||||
})
|
|
||||||
.on('end', () => {
|
|
||||||
cb(new Error('no way!'));
|
|
||||||
});
|
|
||||||
|
|
||||||
setTimeout(() => $q.destroy(), 10 * 1000);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Select and WITH TOTALS statement', () => {
|
describe('Select and WITH TOTALS statement', () => {
|
||||||
[false, true].forEach(withTotals => {
|
[false, true].forEach(withTotals => {
|
||||||
it(`is ${withTotals}`, async () => {
|
it(`is ${withTotals}`, async () => {
|
||||||
@@ -690,6 +690,59 @@ describe('Select and WITH TOTALS statement', () => {
|
|||||||
expect(result).to.have.key('statistics');
|
expect(result).to.have.key('statistics');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('WITH TOTALS #2', async () => {
|
||||||
|
const result = await clickhouse.query(`
|
||||||
|
SELECT
|
||||||
|
rowNumberInAllBlocks() AS i,
|
||||||
|
SUM(number)
|
||||||
|
FROM (
|
||||||
|
SELECT
|
||||||
|
number
|
||||||
|
FROM
|
||||||
|
system.numbers
|
||||||
|
LIMIT 1000
|
||||||
|
)
|
||||||
|
GROUP BY i WITH TOTALS LIMIT 10
|
||||||
|
`).toPromise();
|
||||||
|
|
||||||
|
expect(result).to.have.key('meta');
|
||||||
|
expect(result).to.have.key('data');
|
||||||
|
expect(result).to.have.key('totals');
|
||||||
|
expect(result).to.have.key('rows');
|
||||||
|
expect(result).to.have.key('statistics');
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Abort query', () => {
|
||||||
|
it('exec & abort', cb => {
|
||||||
|
const $q = clickhouse.query(`SELECT number FROM system.numbers LIMIT ${rowCount}`);
|
||||||
|
|
||||||
|
let i = 0,
|
||||||
|
error = null;
|
||||||
|
|
||||||
|
const stream = $q.stream()
|
||||||
|
.on('data', () => {
|
||||||
|
++i;
|
||||||
|
|
||||||
|
if (i > minRnd) {
|
||||||
|
stream.pause();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('error', err => error = err)
|
||||||
|
.on('close', () => {
|
||||||
|
expect(error).to.not.be.ok();
|
||||||
|
expect(i).to.be.below(rowCount);
|
||||||
|
|
||||||
|
// Take some time for waiting of cancel query
|
||||||
|
setTimeout(() => cb(), 4 * 1000);
|
||||||
|
})
|
||||||
|
.on('end', () => {
|
||||||
|
cb(new Error('no way!'));
|
||||||
|
});
|
||||||
|
|
||||||
|
setTimeout(() => $q.destroy(), 10 * 1000);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async () => {
|
after(async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user