def test_neuron_signer(self): neu1 = s_neuron.Daemon() neu2 = s_neuron.Daemon() neu3 = s_neuron.Daemon() neu1.setNeuInfo('rsakey',rsa1) neu2.setNeuInfo('rsakey',rsa2) neu3.setNeuInfo('rsakey',rsa3) cert1 = neu1.genPeerCert(signer=True) # make the new cert everybodys signer neu2.addPeerCert(cert1) neu3.addPeerCert(cert1) cert2 = neu2.genPeerCert() cert3 = neu3.genPeerCert() self.assertFalse( neu3.loadPeerCert( cert2 ) ) self.assertFalse( neu2.loadPeerCert( cert3 ) ) cert2 = neu1.signPeerCert( cert2 ) cert3 = neu1.signPeerCert( cert3 ) self.assertTrue( neu2.loadPeerCert( cert3 ) ) self.assertTrue( neu3.loadPeerCert( cert2 ) )
def test_neuron_keepstate(self): fd = io.BytesIO() neu = s_neuron.Daemon(statefd=fd) ident = neu.getNeuInfo('ident') neu.setNeuInfo('rsakey',rsa1) neu.addNeuCortex('woot.0','ram:///',tags='hehe,haha') neu.addNeuCortex('woot.1','ram:///') neu.delNeuCortex('woot.1') cert = neu.genPeerCert() neu.fini() fd.flush() fd.seek(0) neu = s_neuron.Daemon(statefd=fd) self.assertEqual( neu.getNeuInfo('ident'), ident ) self.assertEqual( neu.getNeuInfo('rsakey'), rsa1 ) self.assertEqual( neu.getNeuInfo('peercert'), cert ) self.assertIsNone( neu.metacore.getCortex('woot.1') ) self.assertIsNotNone( neu.metacore.getCortex('woot.0') ) neu.fini()
def test_neuron_authmod(self): neu1 = s_neuron.Daemon() self.assertTrue( neu1.getAuthAllow( 'hehe', 'haha' ) ) authdef = ('synapse.tests.test_neuron.FakeAuth',(),{}) neu1.setNeuInfo('authmod',authdef) self.assertFalse( neu1.getAuthAllow( 'hehe', 'haha' ) )
def test_neuron_route_basics(self): neuron = s_neuron.Daemon() ident = neuron.ident peers = [ s_common.guid() for i in range(3) ] neuron.addPeerGraphEdge( ident, peers[0] ) neuron.addPeerGraphEdge( peers[0], ident ) neuron.addPeerGraphEdge( peers[0], peers[1] ) neuron.addPeerGraphEdge( peers[1], peers[0] ) neuron.addPeerGraphEdge( peers[1], peers[2] ) neuron.addPeerGraphEdge( peers[2], peers[1] ) route = neuron._getPeerRoute( peers[2] ) self.assertListEqual( route, [ ident, peers[0], peers[1], peers[2] ] ) neuron.fini()
def main(argv): ''' A tool for inititializing neuron options. ''' p = argparse.ArgumentParser(prog='neutool') p.add_argument('--init-peer', default=False, action='store_true', help='Init a Peer Neuron') p.add_argument('--init-master', default=False, action='store_true', help='Init a Master Neuron') p.add_argument('--sign-with', metavar='<file>', default=None, help='Sign with another neuron.mpk') p.add_argument('--show-info', default=False, action='store_true') p.add_argument('--add-peer', default=[], action='append', help='Add a Peer URL') p.add_argument('--add-server', default=[], action='append', help='Add a Server URL') p.add_argument('filename') opts = p.parse_args(argv) fd = statefd(opts.filename) neu = s_neuron.Daemon(statefd=fd) if opts.init_peer: neu.genRsaKey() neu.genPeerCert() elif opts.init_master: neu.genRsaKey() neu.genPeerCert(signer=True, master=True) if opts.sign_with: neu1 = s_neuron.Daemon(statefd=statefd(opts.sign_with)) cert = neu.getNeuInfo('peercert') cert = neu1.signPeerCert(cert) neu.setNeuInfo('peercert', cert) neu.addPeerCert(neu1.getNeuInfo('peercert')) for servurl in opts.add_server: neu.addServerUrl(servurl) if opts.show_info: keys = neu.neuinfo.keys() for key in sorted(keys): print('%s: %r' % (key, neu.getNeuInfo(key))) neu.fini() fd.close()
def test_neuron_peering(self): neu1 = s_neuron.Daemon() neu2 = s_neuron.Daemon() neu3 = s_neuron.Daemon() neu1.setNeuInfo('rsakey',rsa1) neu2.setNeuInfo('rsakey',rsa2) neu3.setNeuInfo('rsakey',rsa3) cert1 = neu1.genPeerCert() cert2 = neu2.genPeerCert() cert3 = neu3.genPeerCert() neu1.addPeerCert(cert2) neu1.addPeerCert(cert3) neu2.addPeerCert(cert1) neu2.addPeerCert(cert3) neu3.addPeerCert(cert1) neu3.addPeerCert(cert2) link1 = s_link.chopLinkUrl('tcp://127.0.0.1:0') #link1 = s_common.tufo('tcp',listen=('0.0.0.0',0)) neu1.runLinkServer(link1) evt1 = threading.Event() def peer1init(event): evt1.set() evt2 = threading.Event() def peer2init(event): evt2.set() evt3 = threading.Event() def peer3init(event): evt3.set() neu1.on('neu:peer:init',peer1init) neu2.on('neu:peer:init',peer2init) neu3.on('neu:peer:init',peer3init) neu2.runLinkPeer(link1) self.assertTrue( evt1.wait(3) ) self.assertTrue( evt2.wait(3) ) neu3.runLinkPeer(link1) self.assertTrue( evt3.wait(3) ) rtt1 = neu1.syncPingPeer(neu2.ident) rtt2 = neu2.syncPingPeer(neu1.ident) # check that 3 can reach 2 via 1 rtt3 = neu3.syncPingPeer(neu2.ident) self.assertIsNotNone(rtt1) self.assertIsNotNone(rtt2) self.assertIsNotNone(rtt3) neu1.fini() neu2.fini() neu3.fini()
def test_neuron_poolsize(self): neu = s_neuron.Daemon() neu.setNeuInfo('poolsize',4) self.assertEqual( neu.asyncpool.pool, 4 )
def test_neuron_shares(self): neu1 = s_neuron.Daemon() foobar = 'synapse.tests.test_neuron.FooBar' neu1.addNeuShare('foobar',foobar,(),{})