Skip to content

Commit 9ee648e

Browse files
committed
Performed 24 hour tests.
1 parent 668ba9d commit 9ee648e

File tree

2 files changed

+134
-41
lines changed

2 files changed

+134
-41
lines changed

test/test-send-to-kafka.js

+41-41
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ require('dotenv').config();
77
// Initialize Kafka client and producer
88
const openseaApiKey = process.env.OPENSEA_API_KEY;
99
const kafka = new Kafka({
10-
clientId: 'test-producer',
11-
brokers: ['localhost:9097'],
12-
});
10+
clientId: 'test-producer',
11+
brokers: ['localhost:9097'],
12+
});
1313
const producer = kafka.producer();
1414
const admin = kafka.admin();
1515

@@ -34,52 +34,52 @@ async function createTopic() {
3434

3535
// Test OpenSea Producer
3636
async function testOpenSeaProducer() {
37-
const client = new OpenSeaStreamClient({
38-
token: openseaApiKey,
39-
network: Network.MAINNET,
40-
onError: (err) => console.error('OpenSea Stream Error:', err),
41-
logLevel: 'info',
42-
connectOptions: {
43-
transport: WebSocket,
44-
sessionStorage: LocalStorage
45-
}
46-
});
37+
const client = new OpenSeaStreamClient({
38+
token: openseaApiKey,
39+
network: Network.MAINNET,
40+
onError: (err) => console.error('OpenSea Stream Error:', err),
41+
logLevel: 'info',
42+
connectOptions: {
43+
transport: WebSocket,
44+
sessionStorage: LocalStorage
45+
}
46+
});
4747

48-
let eventCount = 0;
49-
const maxEvents = 10;
48+
let eventCount = 0;
49+
const maxEvents = 10;
5050

51-
const eventPromise = new Promise((resolve) => {
52-
producer.connect();
53-
client.onItemSold('*', async (event) => {
54-
console.log('Received Item Sold Event:', eventCount, event);
55-
eventCount++;
51+
const eventPromise = new Promise((resolve) => {
52+
producer.connect();
53+
client.onItemSold('*', async (event) => {
54+
console.log('Received Item Sold Event:', eventCount, event);
55+
eventCount++;
5656

57-
// Send event to Kafka
58-
try {
59-
await producer.send({
60-
topic: 'test-os_event',
61-
messages: [{ value: JSON.stringify(event) }],
62-
});
63-
} catch (error) {
64-
console.error('Error sending event to Kafka:', error);
65-
}
57+
// Send event to Kafka
58+
try {
59+
await producer.send({
60+
topic: 'test-os_event',
61+
messages: [{ value: JSON.stringify(event) }],
62+
});
63+
} catch (error) {
64+
console.error('Error sending event to Kafka:', error);
65+
}
6666

67-
if (eventCount >= maxEvents) {
68-
console.log('Received 10 events. Disconnecting from OpenSea Stream API and Kafka...');
69-
resolve();
70-
}
67+
if (eventCount >= maxEvents) {
68+
console.log('Received 10 events. Disconnecting from OpenSea Stream API and Kafka...');
69+
resolve();
70+
}
71+
});
7172
});
72-
});
7373

74-
// Simulate connection (if needed)
75-
client.connect();
74+
// Simulate connection (if needed)
75+
client.connect();
7676

77-
// Wait until 10 events are received
78-
await eventPromise;
77+
// Wait until 10 events are received
78+
await eventPromise;
7979

80-
// Disconnect the client
81-
client.disconnect();
82-
await producer.disconnect();
80+
// Disconnect the client
81+
client.disconnect();
82+
await producer.disconnect();
8383
}
8484

8585
// Run tests

test/test_send-to-kafka_timer.js

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
const { Kafka } = require('kafkajs');
2+
const { OpenSeaStreamClient, Network } = require('@opensea/stream-js');
3+
const { WebSocket } = require('ws');
4+
const { LocalStorage } = require('node-localstorage');
5+
require('dotenv').config();
6+
7+
// Initialize Kafka client and producer
8+
const openseaApiKey = process.env.OPENSEA_API_KEY;
9+
const kafka = new Kafka({
10+
clientId: 'test-producer',
11+
brokers: ['localhost:9097'],
12+
});
13+
const producer = kafka.producer();
14+
const admin = kafka.admin();
15+
16+
// Function to create Kafka topic
17+
async function createTopic() {
18+
await admin.connect();
19+
try {
20+
await admin.createTopics({
21+
topics: [{ topic: 'test-os_event_24hr', numPartitions: 4 }],
22+
});
23+
console.log('Topic created');
24+
} catch (error) {
25+
if (error.type === 'TOPIC_ALREADY_EXISTS') {
26+
console.log('Topic already exists');
27+
} else {
28+
throw error;
29+
}
30+
} finally {
31+
await admin.disconnect();
32+
}
33+
}
34+
35+
// Test OpenSea Producer
36+
async function testOpenSeaProducer() {
37+
const client = new OpenSeaStreamClient({
38+
token: openseaApiKey,
39+
network: Network.MAINNET,
40+
onError: (err) => console.error('OpenSea Stream Error:', err),
41+
logLevel: 'info',
42+
connectOptions: {
43+
transport: WebSocket,
44+
sessionStorage: LocalStorage
45+
}
46+
});
47+
48+
// 24 hours in milliseconds (24 hours * 60 minutes * 60 seconds * 1000 milliseconds)
49+
const duration = 24 * 60 * 60 * 1000;
50+
let eventCount = 0;
51+
52+
const eventPromise = new Promise((resolve) => {
53+
producer.connect();
54+
client.onItemSold('*', async (event) => {
55+
eventCount ++
56+
console.log(event, 'Received Item Sold Event: #', eventCount);
57+
58+
// Send event to Kafka
59+
try {
60+
await producer.send({
61+
topic: 'test-os_event_24hr',
62+
messages: [{ value: JSON.stringify(event) }],
63+
});
64+
} catch (error) {
65+
console.error('Error sending event to Kafka:', error);
66+
}
67+
});
68+
69+
// Set a timeout to run the function for 24 hours
70+
setTimeout(() => {
71+
console.log('24 hours passed. Disconnecting from OpenSea Stream API and Kafka...');
72+
client.disconnect();
73+
producer.disconnect();
74+
resolve();
75+
}, duration);
76+
});
77+
78+
// Simulate connection (if needed)
79+
client.connect();
80+
81+
// Wait until 10 events are received
82+
await eventPromise;
83+
84+
// Disconnect the client
85+
client.disconnect();
86+
await producer.disconnect();
87+
}
88+
89+
// Run tests
90+
(async () => {
91+
await createTopic();
92+
await testOpenSeaProducer();
93+
})();

0 commit comments

Comments
 (0)