def test_remove_recorder_stream(self): inventory = Inventory('inventory_name') recorder1 = Recorder(serial='rec1_serial', model='rec1_model', producer='rec1_producer') stream1 = RecorderStream(name='stream1_name', label='stream1_label') recorder1.add_stream(stream1) inventory.add_recorder(recorder1) sensor1 = Sensor(serial='sensor1_serial', model='sensor1_model', producer='sensor1_producer') component1 = SensorComponent(name='comp1_name') sensor1.add_component(component1) inventory.add_sensor(sensor1) cur_starttime = UTCDateTime('2014-01-01') cur_endtime = UTCDateTime('2014-02-01') stream1.add_component(serial='sensor1_serial', name='comp1_name', start_time=cur_starttime, end_time=cur_endtime) network1 = Network(name='XX') station1 = Station(name='station1_name', location='station1_location', x=10, y=20, z=30) channel1 = Channel(name='channel_1') channel2 = Channel(name='channel_2') station1.add_channel(channel1) station1.add_channel(channel2) network1.add_station(station1) inventory.add_network(network1) channel1.add_stream(serial='rec1_serial', model='rec1_model', producer='rec1_producer', name='stream1_name', start_time=None, end_time=None) assigned_channels = stream1.assigned_channels self.assertEqual(len(assigned_channels), 1) self.assertIs(assigned_channels[0], channel1) removed_stream = recorder1.pop_stream_by_instance(stream1) self.assertIsNone(removed_stream) self.assertIs(assigned_channels[0].streams[0].item, stream1) # Remove the assignement of the channel to the stream. channel1.remove_stream('rec1_serial', 'stream1_name') self.assertEqual(len(channel1.streams), 0) self.assertEqual(len(stream1.assigned_channels), 0)
def test_add_network_to_inventory(self): inventory = Inventory('inventory_name') network1 = Network(name='XX') network2 = Network(name='YY') station1 = Station(name='station1_name', location='station1_location', x=10, y=20, z=30) # The network name should be overwritten when added to the network. station2 = Station(name='station2_name', location='station2_location', x=10, y=20, z=30) network1.add_station(station1) network2.add_station(station2) inventory.add_network(network1) inventory.add_network(network2) self.assertEqual(len(inventory.networks), 2) self.assertTrue(network1 in inventory.networks) self.assertTrue(network2 in inventory.networks) self.assertEqual(station2.network, 'YY')
def process_networks(self, inventory, networks): ''' Process the extraced network nodes. Parameters ---------- inventory : :class:`~psysmon.packages.geometry.inventory.Inventory` The inventory to which to add the parsed sensors. networks : xml network nodes The xml network nodes parsed using the findall method. ''' self.logger.debug("Processing the networks.") for cur_network in networks: content = self.parse_node(cur_network) if self.check_completeness(cur_network, content, 'network') is False: continue if 'station' in content.keys(): content.pop('station') # Create the Recorder instance. net_to_add = Network(name=cur_network.attrib['name'], **content) # Add the network to the inventory. inventory.add_network(net_to_add) stations = cur_network.findall('station') self.process_stations(net_to_add, stations)
def __init__(self, parent_inventory, name, description, type, geom_network=None): Network.__init__(self, name=name, description=description, type=type, parent_inventory=parent_inventory) if geom_network is None: # Create a new database network instance. geom_network_orm = self.parent_inventory.project.dbTables[ 'geom_network'] self.geom_network = geom_network_orm(self.name, self.description, self.type) else: self.geom_network = geom_network
def test_remove_network_from_inventory(self): inventory = Inventory('inventory_name') network1 = Network(name='XX') network2 = Network(name='YY') network3 = Network(name='ZZ') inventory.add_network(network1) inventory.add_network(network2) inventory.add_network(network3) self.assertEqual(len(inventory.networks), 3) cur_net = inventory.remove_network(name='YY') self.assertEqual(len(inventory.networks), 2) self.assertEqual(cur_net, network2) self.assertTrue(network2 not in inventory.networks) cur_net = inventory.remove_network(name='AA') self.assertIsNone(cur_net) self.assertEqual(len(inventory.networks), 2)
def test_add_station_to_inventory(self): inventory = Inventory('inventory_name') network1 = Network(name='XX') network2 = Network(name='YY') station1 = Station(name='station1_name', location='station1_location', x=10, y=20, z=30) station2 = Station(name='station2_name', location='station2_location', x=10, y=20, z=30) station3 = Station(name='station3_name', location='station3_location', x=10, y=20, z=30) inventory.add_network(network1) inventory.add_network(network2) inventory.add_station('XX', station1) inventory.add_station('YY', station2) inventory.add_station('ZZ', station3) self.assertIs(station1.parent_inventory, inventory) self.assertIs(station2.parent_inventory, inventory) self.assertIsNone(station3.parent_inventory) self.assertIs(station1.parent_network, network1) self.assertIs(station2.parent_network, network2) self.assertIsNone(station3.parent_network)
def test_handle_station_in_array(self): inventory = Inventory('inventory_name') # First create a network and add some stations. network_1 = Network(name='XX') station_1 = Station(name='station_1_name', location='station_1_location', x=10, y=20, z=30) station_2 = Station(name='station_2_name', location='station_2_location', x=10, y=20, z=30) station_3 = Station(name='station_3_name', location='station_3_location', x=10, y=20, z=30) network_1.add_station(station_1) network_1.add_station(station_2) network_1.add_station(station_3) inventory.add_network(network_1) # Create two arrays and add them to the inventory. array_1 = Array(name='array_1') array_2 = Array(name='array_2') inventory.add_array(array_1) inventory.add_array(array_2) # Add some stations to the first array. start_time = UTCDateTime('2017-04-29') array_1.add_station(station_1, start_time=start_time, end_time=None) array_1.add_station(station_2, start_time=start_time, end_time=None) array_1.add_station(station_3, start_time=start_time, end_time=None) # Test for correct values. self.assertEqual(len(array_1.stations), 3) self.assertEqual(array_1.stations[0].item, station_1) self.assertEqual(array_1.stations[1].item, station_2) self.assertEqual(array_1.stations[2].item, station_3) # Remove one station. array_1.remove_station(name='station_2_name') # Test for correct values. self.assertEqual(len(array_1.stations), 2) self.assertEqual(array_1.stations[0].item, station_1) self.assertEqual(array_1.stations[1].item, station_3)
def test_inventory_get_methods(self): inventory = Inventory('inventory_name') network1 = Network(name='XX', type='db') network2 = Network(name='YY', type='xml') network3 = Network(name='ZZ', type='xml') station1 = Station(name='station1_name', location='station1_location', x=10, y=20, z=30) station2 = Station(name='station2_name', location='station2_location', x=10, y=20, z=30) station3 = Station(name='station3_name', location='station3_location', x=10, y=20, z=30) station4 = Station(name='station4_name', location='station4_location', x=10, y=20, z=30) network1.add_station(station1) network2.add_station(station2) network2.add_station(station3) network3.add_station(station4) inventory.add_network(network1) inventory.add_network(network2) inventory.add_network(network3) # Test getting networks. cur_net = inventory.get_network() self.assertEqual(len(cur_net), 3) cur_net = inventory.get_network(name='XX') self.assertEqual(cur_net[0], network1) cur_net = inventory.get_network(name='YY') self.assertEqual(cur_net[0], network2) cur_net = inventory.get_network(name='ZZ') self.assertEqual(cur_net[0], network3) cur_net = inventory.get_network(type='db') self.assertEqual(cur_net[0], network1) cur_net = inventory.get_network(type='xml') self.assertEqual(len(cur_net), 2) self.assertTrue(network2 in cur_net) self.assertTrue(network3 in cur_net) cur_net = inventory.get_network(name='XX', type='db') self.assertEqual(cur_net[0], network1) cur_net = inventory.get_network(name='YY', type='xml') self.assertEqual(cur_net[0], network2) # Test getting stations. cur_stat = inventory.get_station() self.assertEqual(len(cur_stat), 4)