| // 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); |