def test_trees_merge_two_levels(self): data = RPD_DB() c = self._create_filled_cfg() data.set_val(['cfg'], c) c2 = cfg_pb2.config() d1 = c2.DsOfdmProfile.add() d1.ProfileId = 1 # Add another subcarrier under existing profileId d11 = d1.DsOfdmSubcarrierModulation.add() d11.StartSubcarrierId = 12 d11.EndSubcarrierId = 12 d11.Modulation = 1 # Change leaf which is not leaf d2 = c2.DsOfdmProfile.add() d2.ProfileId = 2 d21 = d2.DsOfdmSubcarrierModulation.add() d21.StartSubcarrierId = 21 d21.EndSubcarrierId = 21 d21.Modulation = 3 data.merge_from_tree(['cfg'], c2) value = data.get_val(['cfg', 'DsOfdmProfile']) self.assertEqual(len(value), 2) value = data.get_val( ['cfg', 'DsOfdmProfile', 1, 'DsOfdmSubcarrierModulation']) self.assertListEqual([x.StartSubcarrierId for x in value], [11, 12]) value = data.get_val( ['cfg', 'DsOfdmProfile', 2, 'DsOfdmSubcarrierModulation']) # One from two subcarriers specified - check if second was not removed self.assertEqual(len(value), 2) self.assertListEqual([x.Modulation for x in value], [3, 3])
def test_trees_merge_to_empty(self): data = RPD_DB() data.data.Clear() c = self._create_filled_cfg() # Merge and check if DB content is same as inserted object data.merge_from_tree(['cfg'], c) str1 = data.data.cfg.SerializeToString() str2 = c.SerializeToString() self.assertEqual(str1, str2)
def test_trees_merge_no_conflicts(self): data = RPD_DB() data.data.Clear() c = self._create_filled_cfg() # Add one element, merge again and check if value was not overwritten data.data.cfg.RpdCapabilities.NumBdirPorts = 5 data.merge_from_tree(['cfg'], c) str1 = data.data.cfg.SerializeToString() str2 = c.SerializeToString() self.assertNotEqual(str1, str2) self.assertEqual( data.get_val(['cfg', 'RpdCapabilities', 'NumBdirPorts']), 5) # Delete additional item, check if buffers are same now data.del_val(['cfg', 'RpdCapabilities', 'NumBdirPorts']) str1 = data.data.cfg.SerializeToString() self.assertEqual(str1, str2)
def test_trees_merge_repeated_no_conflict(self): data = RPD_DB() c = self._create_filled_cfg() data.set_val(['cfg'], c) # DB is prepared, create another copy with added element on level 1 c2 = self._create_filled_cfg() d3 = c2.DsOfdmProfile.add() d3.ProfileId = 4 d11 = d3.DsOfdmSubcarrierModulation.add() d11.StartSubcarrierId = 15 d11.EndSubcarrierId = 15 d11.Modulation = 6 data.merge_from_tree(['cfg'], c2) value = data.get_val(['cfg', 'DsOfdmProfile']) self.assertEqual(len(value), 3) self.assertListEqual([x.ProfileId for x in value], [1, 2, 4])
def test_trees_merge_conflict(self): data = RPD_DB() caps = t_RpdCapabilities() caps.NumBdirPorts = 5 caps.NumDsRfPorts = 6 data.set_val(['cfg', 'RpdCapabilities'], caps) # Create second instance with conflict caps2 = t_RpdCapabilities() caps2.NumDsRfPorts = 7 caps2.NumTenGeNsPorts = 8 # Merge tree to DB data.merge_from_tree(['cfg', 'RpdCapabilities'], caps2) value = data.get_val(['cfg', 'RpdCapabilities']) self.assertEqual(value.NumBdirPorts, 5) self.assertEqual(value.NumDsRfPorts, 7) self.assertEqual(value.NumTenGeNsPorts, 8) self.assertEqual(len(value.ListFields()), 3)