1+ var assert = require ( 'assert' ) ;
2+ const { uuid } = require ( 'uuidv4' ) ;
3+ const { Chat21Client } = require ( '../mqttclient/chat21client.js' ) ;
4+
5+ const user1 = {
6+ userid : 'USER1' ,
7+ fullname : 'User 1' ,
8+ firstname : 'User' ,
9+ lastname : '1' ,
10+ token : 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2NzI5NDc4ZS1mOWIwLTRiODctYjNhYS03ZjU1OWExNzc5YjIiLCJzdWIiOiJVU0VSMSIsInNjb3BlIjpbInJhYmJpdG1xLnJlYWQ6Ki8qL2FwcHMudGlsZWNoYXQudXNlcnMuVVNFUjEuKiIsInJhYmJpdG1xLndyaXRlOiovKi9hcHBzLnRpbGVjaGF0LnVzZXJzLlVTRVIxLioiLCJyYWJiaXRtcS5jb25maWd1cmU6Ki8qLyoiXSwiY2xpZW50X2lkIjoiVVNFUjEiLCJjaWQiOiJVU0VSMSIsImF6cCI6IlVTRVIxIiwidXNlcl9pZCI6IlVTRVIxIiwiYXBwX2lkIjoidGlsZWNoYXQiLCJpYXQiOjE2MjM3Njc1MjAsImV4cCI6MTkzNDgwNzUyMCwiYXVkIjpbInJhYmJpdG1xIiwiVVNFUjEiXSwia2lkIjoidGlsZWRlc2sta2V5IiwidGlsZWRlc2tfYXBpX3JvbGVzIjoidXNlciJ9.r-GBXo1fIUtl1QjOkXxcRaenVNQBElRkus3omh9YtjQ'
11+ } ;
12+
13+ const user2 = {
14+ userid : 'USER2' ,
15+ fullname : 'User 2' ,
16+ firstname : 'User' ,
17+ lastname : '2' ,
18+ token : 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI0MmEwMjc2ZC1lODUzLTQ5YjMtOTU4ZS0xODBkMjFjZGZjNWMiLCJzdWIiOiJVU0VSMiIsInNjb3BlIjpbInJhYmJpdG1xLnJlYWQ6Ki8qL2FwcHMudGlsZWNoYXQudXNlcnMuVVNFUjIuKiIsInJhYmJpdG1xLndyaXRlOiovKi9hcHBzLnRpbGVjaGF0LnVzZXJzLlVTRVIyLioiLCJyYWJiaXRtcS5jb25maWd1cmU6Ki8qLyoiXSwiY2xpZW50X2lkIjoiVVNFUjIiLCJjaWQiOiJVU0VSMiIsImF6cCI6IlVTRVIyIiwidXNlcl9pZCI6IlVTRVIyIiwiYXBwX2lkIjoidGlsZWNoYXQiLCJpYXQiOjE2MjM3Njc1MjAsImV4cCI6MTkzNDgwNzUyMCwiYXVkIjpbInJhYmJpdG1xIiwiVVNFUjIiXSwia2lkIjoidGlsZWRlc2sta2V5IiwidGlsZWRlc2tfYXBpX3JvbGVzIjoidXNlciJ9.Zkbr3e9MfGGDKRdVUyG4330LxeNaKYS0y3upPtS4Wgg'
19+ } ;
20+
21+ const user3 = {
22+ userid : 'USER3' ,
23+ fullname : 'User 3' ,
24+ firstname : 'User' ,
25+ lastname : '3' ,
26+ token : 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlMmI2Y2RhMi0yNjhmLTQxZDMtYjBjYy1kZWNjN2I0M2UwMjEiLCJzdWIiOiJVU0VSMyIsInNjb3BlIjpbInJhYmJpdG1xLnJlYWQ6Ki8qL2FwcHMudGlsZWNoYXQudXNlcnMuVVNFUjMuKiIsInJhYmJpdG1xLndyaXRlOiovKi9hcHBzLnRpbGVjaGF0LnVzZXJzLlVTRVIzLioiLCJyYWJiaXRtcS5jb25maWd1cmU6Ki8qLyoiXSwiY2xpZW50X2lkIjoiVVNFUjMiLCJjaWQiOiJVU0VSMyIsImF6cCI6IlVTRVIzIiwidXNlcl9pZCI6IlVTRVIzIiwiYXBwX2lkIjoidGlsZWNoYXQiLCJpYXQiOjE2MjM3Njc1MjAsImV4cCI6MTkzNDgwNzUyMCwiYXVkIjpbInJhYmJpdG1xIiwiVVNFUjMiXSwia2lkIjoidGlsZWRlc2sta2V5IiwidGlsZWRlc2tfYXBpX3JvbGVzIjoidXNlciJ9.-Cio8ITPCQswv_4KnxJrRbm-5RCXMefuT91wWUNZJmU'
27+ } ;
28+ const MQTT_ENDPOINT = 'ws://localhost:15675/ws' ;
29+ const API_ENDPOINT = 'http://localhost:8004/api'
30+ const APPID = 'tilechat' ;
31+
32+ let TOTAL_SENT_MESSAGES = 100 ;
33+ let TOTAL_DELIVERED_MESSAGES = TOTAL_SENT_MESSAGES * 3 ;
34+ let starttime ;
35+ let endtime ;
36+
37+ startBenchmark ( ) ;
38+
39+ function startBenchmark ( ) {
40+ console . log ( "Sending " + TOTAL_SENT_MESSAGES + " messages to 3 users. Delivering a total of " + TOTAL_DELIVERED_MESSAGES + " messages." ) ;
41+ let messages_count = 0 ;
42+ const group_id = "group-" + uuid ( ) ;
43+ const group_name = "test send message group" ;
44+ const group_members = { }
45+ group_members [ user1 . userid ] = 1 ;
46+ group_members [ user2 . userid ] = 1 ;
47+ group_members [ user3 . userid ] = 1 ;
48+ let received_messages = { }
49+ const USER1_RECEIVED_KEY = 'user1' ;
50+ const USER2_RECEIVED_KEY = 'user2' ;
51+ const USER3_RECEIVED_KEY = 'user3' ;
52+ const SENT_MESSAGE = "Welcome everybody 2" ;
53+ let chatClient1 = new Chat21Client ( // group creator
54+ {
55+ appId : APPID ,
56+ MQTTendpoint : MQTT_ENDPOINT ,
57+ APIendpoint : API_ENDPOINT
58+ }
59+ ) ;
60+ let chatClient2 = new Chat21Client ( // group member, will receive sent message
61+ {
62+ appId : APPID ,
63+ MQTTendpoint : MQTT_ENDPOINT
64+ }
65+ ) ;
66+ let chatClient3 = new Chat21Client ( // group member, will receive sent message
67+ {
68+ appId : APPID ,
69+ MQTTendpoint : MQTT_ENDPOINT
70+ }
71+ ) ;
72+ chatClient2 . connect ( user2 . userid , user2 . token , ( ) => {
73+ console . log ( "User2 connected..." ) ;
74+ chatClient2 . onMessageAdded ( ( message , topic ) => {
75+ console . log ( "user2 message added:" , message . text ) ;
76+ if (
77+ message &&
78+ message . text &&
79+ ! message . attributes
80+ ) {
81+ messages_count += 1 ;
82+ console . log ( "user2: " + messages_count ) ;
83+ }
84+ check_finish ( messages_count , chatClient1 , chatClient2 , chatClient3 ) ;
85+ } ) ;
86+ chatClient3 . connect ( user3 . userid , user3 . token , ( ) => {
87+ console . log ( "User3 connected..." ) ;
88+ chatClient3 . onMessageAdded ( ( message , topic ) => {
89+ console . log ( "user3 message added:" , message . text ) ;
90+ if (
91+ message &&
92+ message . text &&
93+ ! message . attributes
94+ ) {
95+ messages_count += 1 ;
96+ console . log ( "user3: " + messages_count ) ;
97+ }
98+ check_finish ( messages_count , chatClient1 , chatClient2 , chatClient3 ) ;
99+ } ) ;
100+ chatClient1 . connect ( user1 . userid , user1 . token , ( ) => {
101+ console . log ( "User1 (group owner) connected..." ) ;
102+ chatClient1 . createGroup (
103+ group_name ,
104+ group_id ,
105+ group_members ,
106+ ( err , result ) => {
107+ assert ( err == null ) ;
108+ assert ( result != null ) ;
109+ assert ( result . success == true ) ;
110+ assert ( result . group . name === group_name ) ;
111+ chatClient1 . onMessageAdded ( ( message , topic ) => {
112+ console . log ( "user1 message added:" , message . text ) ;
113+ if (
114+ message &&
115+ message . text &&
116+ ! message . attributes
117+ ) {
118+ messages_count += 1 ;
119+ console . log ( "user1: " + messages_count ) ;
120+ }
121+ check_finish ( messages_count , chatClient1 , chatClient2 , chatClient3 ) ;
122+ } ) ;
123+ starttime = Date . now ( ) ;
124+ console . log ( "Start:" + starttime ) ;
125+ for ( i = 0 ; i < TOTAL_SENT_MESSAGES ; i ++ ) {
126+ let message_text = "Message" + i ;
127+ chatClient1 . sendMessage (
128+ message_text ,
129+ 'text' ,
130+ group_id ,
131+ group_name ,
132+ user1 . fullname ,
133+ null ,
134+ null ,
135+ 'group' ,
136+ ( ) => {
137+ //console.log("Message sent to group", group_name);
138+ }
139+ ) ;
140+ }
141+ }
142+ ) ;
143+ } ) ;
144+ } ) ;
145+ } ) ;
146+ }
147+
148+ function check_finish ( messages_count , chatClient1 , chatClient2 , chatClient3 ) {
149+ if ( messages_count == TOTAL_DELIVERED_MESSAGES ) {
150+ endtime = Date . now ( ) ;
151+ console . log ( "End:" + endtime ) ;
152+ let totaltime = endtime - starttime ;
153+ console . log ( "TOTAL TIME:" + totaltime ) ;
154+ chatClient1 . close ( ( ) => {
155+ chatClient2 . close ( ( ) => {
156+ chatClient3 . close ( ( ) => {
157+ console . log ( "BENCHMARK END. TOTAL MESSAGES DELIVERED:" , messages_count ) ;
158+ } ) ;
159+ } ) ;
160+ } ) ;
161+ }
162+ }
0 commit comments