github.com/igggame/nebulas-go@v2.1.0+incompatible/nebtestkit/cases/rpc/Subscribe.test.js (about) 1 'use strict'; 2 3 var expect = require('chai').expect; 4 var rpc_client = require('./rpc_client/rpc_client.js'); 5 var Wallet = require("nebulas"); 6 7 var coinbase, 8 client, 9 sourceAccount, 10 chain_id, 11 server_address; 12 13 14 var env = process.env.NET || 'local'; 15 if (env === 'testneb1') { 16 chain_id = 1001; 17 sourceAccount = new Wallet.Account("25a3a441a34658e7a595a0eda222fa43ac51bd223017d17b420674fb6d0a4d52"); 18 coinbase = "n1SAeQRVn33bamxN4ehWUT7JGdxipwn8b17"; 19 server_address = "35.182.48.19:8684"; 20 21 } else if (env === "testneb2") { 22 chain_id = 1002; 23 sourceAccount = new Wallet.Account("25a3a441a34658e7a595a0eda222fa43ac51bd223017d17b420674fb6d0a4d52"); 24 coinbase = "n1SAeQRVn33bamxN4ehWUT7JGdxipwn8b17"; 25 server_address = "34.205.26.12:8684"; 26 27 } else if (env === "testneb3") { 28 chain_id = 1003; 29 sourceAccount = new Wallet.Account("25a3a441a34658e7a595a0eda222fa43ac51bd223017d17b420674fb6d0a4d52"); 30 coinbase = "n1SAeQRVn33bamxN4ehWUT7JGdxipwn8b17"; 31 server_address = "35.177.214.138:8684"; 32 33 } else if (env === "testneb4") { //super node 34 chain_id = 1004; 35 sourceAccount = new Wallet.Account("c75402f6ffe6edcc2c062134b5932151cb39b6486a7beb984792bb9da3f38b9f"); 36 coinbase = "n1EzGmFsVepKduN1U5QFyhLqpzFvM9sRSmG"; 37 server_address = "35.154.108.11:8684"; 38 } else if (env === "testneb4_normalnode"){ 39 chain_id = 1004; 40 sourceAccount = new Wallet.Account("c75402f6ffe6edcc2c062134b5932151cb39b6486a7beb984792bb9da3f38b9f"); 41 coinbase = "n1EzGmFsVepKduN1U5QFyhLqpzFvM9sRSmG"; 42 server_address = "18.197.107.228:8684"; 43 } else if (env === "local") { 44 chain_id = 100; 45 sourceAccount = new Wallet.Account("d80f115bdbba5ef215707a8d7053c16f4e65588fd50b0f83369ad142b99891b5"); 46 coinbase = "n1QZMXSZtW7BUerroSms4axNfyBGyFGkrh5"; 47 server_address = "127.0.0.1:8684"; 48 49 } else if (env === "maintest"){ 50 chain_id = 2; 51 sourceAccount = new Wallet.Account("d2319a8a63b1abcb0cc6d4183198e5d7b264d271f97edf0c76cfdb1f2631848c"); 52 coinbase = "n1dZZnqKGEkb1LHYsZRei1CH6DunTio1j1q"; 53 server_address = "54.149.15.132:8684"; 54 } else { 55 throw new Error("invalid env (" + env + ")."); 56 } 57 58 var all_topics = [ 59 "chain.pendingTransaction", 60 "chain.sendTransaction", 61 "chain.deployContract", 62 "chain.callContract", 63 "chain.contract", 64 "chain.delegate", 65 "chain.candidate", 66 "chain.linkBlock", 67 "chain.latestIrreversibleBlock", 68 "chain.executeTxFailed", 69 "chain.executeTxSuccess", 70 "chain.transactionResult" 71 ]; 72 73 function testSubscribe(testInput, testExpect, done) { 74 var counter = 0; 75 var call; 76 try { 77 call = client.Subscribe(testInput); 78 79 call.on('end', () => { 80 console.log("server finish sending"); 81 }); 82 83 call.on('data', evt => { 84 console.log("[event] " + JSON.stringify(evt) + "\n"); 85 try { 86 expect(evt).to.have.property('topic'); 87 expect(evt).to.have.property('data'); 88 counter++; 89 if (testExpect.justRecieveNum <= counter) { 90 console.log("recieved " + counter + " events, now stop.") 91 call.cancel(); 92 done(); 93 } 94 } catch (err) { 95 call.cancel(); 96 done(err); 97 } 98 }); 99 100 call.on('status', status => { 101 console.log("[status] " + JSON.stringify(status) + "\n"); 102 }); 103 104 setTimeout(() => { 105 if (0 == counter) { 106 console.log(new Error("no events got after " + testExpect.timeout + " ms")) 107 call.cancel(); 108 done(); 109 } 110 }, testExpect.timeout); 111 112 } catch(err) { 113 console.log("call failed:" + err.toString()) 114 if (testExpect.callFailed) { 115 try { 116 expect(err.toString()).to.have.string(testExpect.errorMsg); 117 done(); 118 } catch(er) { 119 done(err); 120 } 121 } else { 122 done(err) 123 } 124 } 125 } 126 127 describe("rpc: Subscribe", () => { 128 before(() => { 129 client = rpc_client.new_client(server_address); 130 }); 131 132 it('1. subsribe all', done => { 133 134 var testInput = { 135 topics: all_topics 136 } 137 138 var testExpect = { 139 callFailed: false, 140 justRecieveNum: 1, 141 timeout: 20000 142 } 143 144 testSubscribe(testInput, testExpect, done) 145 }); 146 147 it('2. all topics are unkown', done => { 148 149 var testInput = { 150 topics: ["unkown"] 151 } 152 153 var testExpect = { 154 callFailed: false, 155 justRecieveNum: 1, 156 timeout: 20000 157 } 158 159 testSubscribe(testInput, testExpect, done) 160 }); 161 162 it('3. partial of all topics are unkown', done => { 163 164 var testInput = { 165 topics: [ 166 "unkown", 167 "chain.linkBlock" 168 ] 169 } 170 171 var testExpect = { 172 callFailed: false, 173 justRecieveNum: 1, 174 timeout: 20000 175 } 176 177 testSubscribe(testInput, testExpect, done) 178 }); 179 180 it('4. no topic', done => { 181 182 var testInput = { 183 topics: [] 184 } 185 186 var testExpect = { 187 callFailed: false, 188 justRecieveNum: 1, 189 timeout: 20000 190 } 191 192 testSubscribe(testInput, testExpect, done) 193 }); 194 });