예제 #1
0
    def test_node(self):
        try:
            server = None
            address = '127.0.0.1:1987'
            if os.path.exists('/tmp/test_node_stat'):
                os.system('rm -rf /tmp/test_node_stat')
            os.system('mkdir /tmp/test_node_stat')

            os.system('cp ./tests/cert/test_certs.ca /tmp/test_node_stat/')
            node = Node('127.0.0.1', 1987, '/tmp/test_node_stat', 'node_stat_test',
                        ks_path=VALID_STORAGE, ks_passwd=PASSWD, node_type='BASE')
            node.start(None)
            server = node
            time.sleep(1)

            packet = {  'method': 'NodeStatistic',
                        'sender': '',
                        'parameters': {'reset_op_stat': True, 'test_val': '232eq'},
                        'sync': True}
            packet_obj = FabnetPacketRequest(**packet)

            reset_op_stat = packet_obj.bool_get('reset_op_stat')
            self.assertEqual(reset_op_stat, True)
            self.assertEqual(packet_obj.bool_get('reset_op_stat2', False), False)
            with self.assertRaises(FriException):
                packet_obj.bool_get('reset_op_stat2')
            self.assertEqual(packet_obj.int_get('reset_op_stat'), 1)
            self.assertEqual(packet_obj.str_get('reset_op_stat'), 'True') 
            with self.assertRaises(FriException):
                packet_obj.int_get('test_val')
            packet_obj.str_get('test_val')


            key_storage = init_keystore(VALID_STORAGE, PASSWD)
            client = FriClient(key_storage)
            self.assertEqual(client.get_session_id(), None)

            ret_packet = client.call_sync('127.0.0.1:1987', packet_obj)

            self.assertNotEqual(client.get_session_id(), None)
            time.sleep(1.5)
            packet['parameters']['base_info'] = True
            packet_obj = FabnetPacketRequest(**packet)
            ret_packet = client.call_sync('127.0.0.1:1987', packet_obj)

            self.assertEqual(isinstance(ret_packet, FabnetPacketResponse), True)
            self.assertEqual(ret_packet.ret_code, 0, ret_packet.ret_message)
            print json.dumps(ret_packet.ret_parameters)
            self.assertEqual(ret_packet.ret_parameters['BaseInfo']['node_name'], 'node_stat_test')
            self.assertEqual(ret_packet.ret_parameters['BaseInfo']['home_dir'], '/tmp/test_node_stat')
            self.assertEqual(ret_packet.ret_parameters['BaseInfo']['node_types'], ['base'])
            self.assertEqual(int(ret_packet.ret_parameters['NeighboursInfo']['uppers_balance']), -1)
            self.assertEqual(int(ret_packet.ret_parameters['NeighboursInfo']['superiors_balance']), -1)
            self.assertTrue(float(ret_packet.ret_parameters['SystemInfo']['loadavg_5']) >= 0)
            self.assertTrue(float(ret_packet.ret_parameters['SystemInfo']['loadavg_10']) >= 0)
            self.assertTrue(float(ret_packet.ret_parameters['SystemInfo']['loadavg_15']) >= 0)
            self.assertTrue(len(ret_packet.ret_parameters['SystemInfo']['core_version'])>0)
            self.assertTrue(len(ret_packet.ret_parameters['SystemInfo']['node_version'])>0)
            self.assertTrue(len(ret_packet.ret_parameters['SystemInfo']['installed_version'])>0)
            self.assertTrue(len(ret_packet.ret_parameters['SystemInfo']['uptime']) > 0)
            self.assertTrue(float(ret_packet.ret_parameters['FriAgentWMStat']['workers']) > 0)
            self.assertTrue(float(ret_packet.ret_parameters['FriAgentWMStat']['busy']) == 0)
            self.assertTrue(float(ret_packet.ret_parameters['OperatorWorkerWMStat']['workers']) > 0)
            self.assertTrue(float(ret_packet.ret_parameters['OperatorWorkerWMStat']['busy']) >= 1)
            self.assertTrue(float(ret_packet.ret_parameters['OperationsProcessorWMStat']['workers']) > 0)
            self.assertTrue(float(ret_packet.ret_parameters['OperationsProcessorWMStat']['busy']) == 0)
            self.assertTrue(float(ret_packet.ret_parameters['FriServerProcStat']['threads']) > 0)
            self.assertTrue(float(ret_packet.ret_parameters['FriServerProcStat']['memory']) > 1000)
            self.assertTrue(float(ret_packet.ret_parameters['OperatorProcStat']['threads']) > 0)
            self.assertTrue(float(ret_packet.ret_parameters['OperatorProcStat']['memory']) > 1000)
            self.assertTrue(float(ret_packet.ret_parameters['OperationsProcessorProcStat']['threads']) > 0)
            self.assertTrue(float(ret_packet.ret_parameters['OperationsProcessorProcStat']['memory']) > 1000)

            self.assertTrue(ret_packet.ret_parameters['OperationsProcTime']['NodeStatistic'] > 0)
            self.assertEqual(ret_packet.ret_parameters['OperationsProcTime']['TopologyCognition'], 0)

            time.sleep(.2)
        finally:
            if server:
                server.stop()
예제 #2
0
    def __defferent_calls(self, key_storage=None):
        fri_server, operator_proc = self.__start_node('testnode00', key_storage)
        try:
            fri_client = FriClient(key_storage)

            #sync call without binary
            resp = fri_client.call_sync('127.0.0.1:6666', FabnetPacketRequest(method='echo', \
                                        parameters={'message': 'hello, fabregas!'}))
            self.assertEqual(resp.ret_code, 0, resp.ret_message)
            self.assertEqual(resp.ret_parameters['message'], 'hello, fabregas!')

            #sync call without binary
            resp = fri_client.call('127.0.0.1:6666', FabnetPacketRequest(method='echo', \
                                        parameters={'message': 'hello, fabregas!'}))
            time.sleep(1)
            EchoOperation.check_resp('hello, fabregas!')

            #sync call with binary unchanked
            data = '0123456789'*900000
            resp = fri_client.call_sync('127.0.0.1:6666', FabnetPacketRequest(method='echo', \
                                        parameters={'message': 'hello, fabregas!'}, \
                                        binary_data=RamBasedBinaryData(data)))

            self.assertEqual(resp.ret_code, 0, resp.ret_message)
            self.assertEqual(resp.binary_data.data(), data)
            self.assertEqual(resp.ret_parameters['message'], 'hello, fabregas!')

            #sync call with binary chanked
            resp = fri_client.call_sync('127.0.0.1:6666', FabnetPacketRequest(method='echo', \
                                        parameters={'message': 'hello, fabregas!'}, \
                                        binary_data=RamBasedBinaryData(data, 900000)))

            self.assertEqual(resp.ret_code, 0, resp.ret_message)
            self.assertEqual(resp.binary_data.data(), data)
            self.assertEqual(resp.ret_parameters['message'], 'hello, fabregas!')
            session_id = fri_client.get_session_id()
            if key_storage:
                self.assertNotEqual(session_id, None)
            else:
                self.assertEqual(session_id, None)

            #async call with binary
            resp = fri_client.call('127.0.0.1:6666', FabnetPacketRequest(method='echo', \
                                        parameters={'message': 'hello, fabregas!'}, \
                                        binary_data=RamBasedBinaryData(data, 900000)))
            time.sleep(1)
            EchoOperation.check_resp('hello, fabregas!', data)
            n_session_id = fri_client.get_session_id()
            self.assertEqual(session_id, n_session_id)

            fri_client = FriClient(key_storage)
            resp = fri_client.call('127.0.0.1:6666', FabnetPacketRequest(method='echo', \
                                        parameters={'message': 'hello, fabregas!'}, \
                                        binary_data=RamBasedBinaryData(data, 900000)))
            n_session_id = fri_client.get_session_id()
            if key_storage:
                self.assertNotEqual(session_id, n_session_id)

            #unauth cal
            resp = fri_client.call_sync('127.0.0.1:6666', FabnetPacketRequest(method='unauth'))
            if key_storage:
                self.assertEqual(resp.ret_code, RC_PERMISSION_DENIED, resp.ret_message)
            else:
                self.assertEqual(resp.ret_code, 0, resp.ret_message)

            #EchoWithCallOperation
            #sync call without binary
            resp = fri_client.call_sync('127.0.0.1:6666', FabnetPacketRequest(method='echo_with_call', \
                                        parameters={'message': 'hello, fabregas!', 'is_sync_call':True},\
                                        binary_data=RamBasedBinaryData(data, 900000)))
            self.assertEqual(resp.ret_code, 0, resp.ret_message)
            self.assertEqual(resp.ret_parameters['message'], 'hello, fabregas!')
            self.assertEqual(resp.binary_data.data(), data)

            #sync call without binary (async in operation)
            resp = fri_client.call_sync('127.0.0.1:6666', FabnetPacketRequest(method='echo_with_call', \
                                        parameters={'message': 'hello, fabregas!', 'is_sync_call':False}))
            self.assertEqual(resp.ret_code, 0, resp.ret_message)
            time.sleep(1)
            EchoOperation.check_resp('hello, fabregas!')

            #sync call with binary (async in operation)
            resp = fri_client.call_sync('127.0.0.1:6666', FabnetPacketRequest(method='echo_with_call', \
                                        parameters={'message': 'hello, fabregas!', 'is_sync_call':False},\
                                        binary_data=RamBasedBinaryData(data, 900000)))
            for i in xrange(10):
                if os.path.exists('/tmp/callback.log'):
                    break
                time.sleep(1)
            time.sleep(1)
            self.assertEqual(resp.ret_code, 0, resp.ret_message)
            EchoOperation.check_resp('hello, fabregas!', data)
        finally:
            fri_server.stop()
            operator_proc.stop()
            operator_proc.join()