Address review comments (tests)

master
Jessie Murray 3 years ago
parent d48353cec3
commit 71223ae005
No known key found for this signature in database
GPG Key ID: E7E4D57EDDA744C5

@ -133,13 +133,9 @@ function installBlock(title, type) {
class Client { class Client {
constructor(type, pingSerializer, getSerializer, setSerializer, pubSerializer, subSerializer) { constructor(type, serializer) {
this.type = type; this.type = type;
this.pingSerializer = pingSerializer; this.serializer = serializer;
this.getSerializer = getSerializer;
this.setSerializer = setSerializer;
this.pubSerializer = pubSerializer;
this.subSerializer = subSerializer;
this.ws = null; this.ws = null;
this.connected = false; this.connected = false;
this.subscribed = false; this.subscribed = false;
@ -169,31 +165,31 @@ class Client {
$(`${this.type}-btn-ping`).addEventListener('click', event => { $(`${this.type}-btn-ping`).addEventListener('click', event => {
event.preventDefault(); event.preventDefault();
const serialized = this.pingSerializer(); const serialized = this.serializer(['PING']);
this.send(serialized); this.send(serialized);
}); });
$(`${this.type}-btn-set`).addEventListener('click', event => { $(`${this.type}-btn-set`).addEventListener('click', event => {
event.preventDefault(); event.preventDefault();
const serialized = this.setSerializer($(`${this.type}-set-key`).value, $(`${this.type}-set-value`).value); const serialized = this.serializer(['SET', $(`${this.type}-set-key`).value, $(`${this.type}-set-value`).value]);
this.send(serialized); this.send(serialized);
}); });
$(`${this.type}-btn-get`).addEventListener('click', event => { $(`${this.type}-btn-get`).addEventListener('click', event => {
event.preventDefault(); event.preventDefault();
const serialized = this.getSerializer($(`${this.type}-get-key`).value); const serialized = this.serializer(['GET', $(`${this.type}-get-key`).value]);
this.send(serialized); this.send(serialized);
}); });
$(`${this.type}-btn-pub`).addEventListener('click', event => { $(`${this.type}-btn-pub`).addEventListener('click', event => {
event.preventDefault(); event.preventDefault();
const serialized = this.pubSerializer($(`${this.type}-pub-channel`).value, $(`${this.type}-pub-message`).value); const serialized = this.serializer(['PUBLISH', $(`${this.type}-pub-channel`).value, $(`${this.type}-pub-message`).value]);
this.send(serialized); this.send(serialized);
}); });
$(`${this.type}-btn-sub`).addEventListener('click', event => { $(`${this.type}-btn-sub`).addEventListener('click', event => {
event.preventDefault(); event.preventDefault();
const serialized = this.subSerializer($(`${this.type}-sub-channel`).value); const serialized = this.serializer(['SUBSCRIBE', $(`${this.type}-sub-channel`).value]);
try { try {
this.send(serialized); this.send(serialized);
this.subscribed = true; this.subscribed = true;
@ -254,23 +250,21 @@ class Client {
} }
} }
function serializeRaw(args) {
let raw = `*${args.length}\r\n`;
for (let i = 0; i < args.length; i++) {
raw += `$${args[i].length}\r\n`;
raw += `${args[i]}\r\n`;
}
return raw;
}
addEventListener("DOMContentLoaded", () => { addEventListener("DOMContentLoaded", () => {
installBlock('JSON', 'json'); installBlock('JSON', 'json');
installBlock('Raw', 'raw'); installBlock('Raw', 'raw');
const jsonClient = new Client('json', const jsonClient = new Client('json', JSON.stringify);
() => JSON.stringify(['PING']), const rawClient = new Client('raw', serializeRaw);
(key) => JSON.stringify(['GET', key]),
(key, value) => JSON.stringify(['SET', key, value]),
(channel, message) => JSON.stringify(['PUBLISH', channel, message]),
(channel) => JSON.stringify(['SUBSCRIBE', channel]));
const rawClient = new Client('raw',
() => '*1\r\n$4\r\nPING\r\n',
(key) => `*2\r\n$3\r\nGET\r\n$${key.length}\r\n${key}\r\n`,
(key, value) => `*3\r\n$3\r\nSET\r\n$${key.length}\r\n${key}\r\n$${value.length}\r\n${value}\r\n`,
(channel, message) => `*3\r\n$7\r\nPUBLISH\r\n$${channel.length}\r\n${channel}\r\n$${message.length}\r\n${message}\r\n`,
(channel) => `*2\r\n$9\r\nSUBSCRIBE\r\n$${channel.length}\r\n${channel}\r\n`);
}); });
</script> </script>

@ -10,9 +10,12 @@ from websocket import create_connection
host = os.getenv('WEBDIS_HOST', '127.0.0.1') host = os.getenv('WEBDIS_HOST', '127.0.0.1')
port = int(os.getenv('WEBDIS_PORT', 7379)) port = int(os.getenv('WEBDIS_PORT', 7379))
def connect(format):
return create_connection(f'ws://{host}:{port}/.{format}')
class TestWebdis(unittest.TestCase): class TestWebdis(unittest.TestCase):
def setUp(self) -> None: def setUp(self) -> None:
self.ws = create_connection(f'ws://{host}:{port}/.{self.format()}') self.ws = connect(self.format())
def tearDown(self) -> None: def tearDown(self) -> None:
self.ws.close() self.ws.close()
@ -95,8 +98,8 @@ class TestRaw(TestWebdis):
@unittest.skipIf(os.getenv('PUBSUB') != '1', "pub-sub test fail due to invalid ordering") @unittest.skipIf(os.getenv('PUBSUB') != '1', "pub-sub test fail due to invalid ordering")
class TestPubSub(unittest.TestCase): class TestPubSub(unittest.TestCase):
def setUp(self): def setUp(self):
self.publisher = create_connection(f'ws://{host}:{port}/.json') self.publisher = connect('json')
self.subscriber = create_connection(f'ws://{host}:{port}/.json') self.subscriber = connect('json')
def tearDown(self): def tearDown(self):
self.publisher.close() self.publisher.close()

Loading…
Cancel
Save