blob: 15e998563171891a73bea9f40c2a5b1970d9f1dc [file]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import assert from 'node:assert/strict';
import { getRawClient } from './client/index.js';
import {
login, logout,
updateStream, getStream, getStreams,
updateTopic, getTopic, getTopics,
createPartition, deletePartition,
createTopic, deleteTopic,
createStream, deleteStream,
} from './wire/index.js';
try {
// create socket
const cli = getRawClient({
transport: 'TCP' as const,
options: {
host: '127.0.0.1',
port: 8090
},
credentials: { username: 'iggy', password: 'iggy' }
});
const s = () => Promise.resolve(cli);
// LOGIN
const r = await login(s)({ username: 'iggy', password: 'iggy' });
console.log('RESPONSE_login', r);
const stream = {
name: 'test-stream',
streamId: 1
};
// CREATE_STREAM
const r_createStream = await createStream(s)(stream);
console.log('RESPONSE_createStream', r_createStream);
// GET_STREAM #ID
const r7 = await getStream(s)({ streamId: stream.streamId });
console.log('RESPONSE7', r7);
// GET_STREAM #NAME
const r8 = await getStream(s)({ streamId: stream.name });
console.log('RESPONSE8', r8);
// UPDATE_STREAM
const r_updateStream = await updateStream(s)({
streamId: stream.streamId, name: 'updatedStreamName'
});
console.log('RESPONSE_updateStream', r_updateStream);
// GET_STREAMS
const r9 = await getStreams(s)();
console.log('RESPONSE9', r9);
const topic1 = {
streamId: stream.streamId,
topicId: 44,
name: 'topic-name-44',
partitionCount: 3,
compressionAlgorithm: 1, // 1 = None, 2 = Gzip
};
// CREATE_TOPIC
const r_createTopic = await createTopic(s)(topic1);
console.log('RESPONSE_createTopic', r_createTopic);
// GET_TOPIC
const t2 = await getTopic(s)({ streamId: topic1.streamId, topicId: topic1.name });
console.log('RESPONSE_getTopic', t2);
assert.ok(t2);
// UPDATE_TOPIC
const r_updateTopic = await updateTopic(s)({
streamId: topic1.streamId, topicId: topic1.topicId, name: topic1.name, messageExpiry: 42n
});
console.log('RESPONSE_updateTopic', r_updateTopic);
// CREATE_PARTITION
const r_createPartition = await createPartition(s)({
streamId: topic1.streamId, topicId: t2.id, partitionCount: 22
});
console.log('RESPONSE_createPartition', r_createPartition);
// DELETE_PARTITION
const r_deletePartition = await deletePartition(s)({
streamId: topic1.streamId, topicId: t2.id, partitionCount: 19
});
console.log('RESPONSE_deletePartition', r_deletePartition);
// GET_TOPIC AGAIN
const r_getTopic2 = await getTopic(s)({ streamId: topic1.streamId, topicId: topic1.name });
console.log('RESPONSE_getTopic2', r_getTopic2);
// GET_TOPICS
const r_getTopics = await getTopics(s)({ streamId: topic1.streamId });
console.log('RESPONSE_getTopics', r_getTopics);
// DELETE TOPIC
const r_deleteTopic = await deleteTopic(s)({
streamId: topic1.streamId, topicId: t2.id, partitionsCount: 3
});
console.log('RESPONSE_deleteTopic', r_deleteTopic);
// DELETE STREAM
const rDelS = await deleteStream(s)({ streamId: stream.streamId });
console.log('RESPONSEDelS', rDelS);
// LOGOUT
const rOut = await logout(s)();
console.log('RESPONSE LOGOUT', rOut);
} catch (err) {
console.error('FAILED!', err);
}
process.exit(0);