コード例 #1
0
    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 ) )
コード例 #2
0
    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()
コード例 #3
0
    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' ) )
コード例 #4
0
    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()
コード例 #5
0
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()
コード例 #6
0
    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()
コード例 #7
0
 def test_neuron_poolsize(self):
     neu = s_neuron.Daemon()
     neu.setNeuInfo('poolsize',4)
     self.assertEqual( neu.asyncpool.pool, 4 )
コード例 #8
0
 def test_neuron_shares(self):
     neu1 = s_neuron.Daemon()
     foobar = 'synapse.tests.test_neuron.FooBar'
     neu1.addNeuShare('foobar',foobar,(),{})