def test_returns_string_for_federated_aggregate(self): comp = computation_test_utils.create_dummy_called_federated_aggregate( accumulate_parameter_name='a', merge_parameter_name='b', report_parameter_name='c') compact_string = comp.compact_representation() self.assertEqual( compact_string, 'federated_aggregate(<data,data,(a -> data),(b -> data),(c -> data)>)' ) formatted_string = comp.formatted_representation() # pyformat: disable self.assertEqual( formatted_string, 'federated_aggregate(<\n' ' data,\n' ' data,\n' ' (a -> data),\n' ' (b -> data),\n' ' (c -> data)\n' '>)') # pyformat: enable structural_string = comp.structural_representation() # pyformat: disable self.assertEqual( structural_string, ' Call\n' ' / \\\n' 'federated_aggregate Tuple\n' ' |\n' ' [data, data, Lambda(a), Lambda(b), Lambda(c)]\n' ' | | |\n' ' data data data')
def test_returns_correct_example_of_broadcast_dependent_on_aggregate(self): aggregate = computation_test_utils.create_dummy_called_federated_aggregate( 'accumulate_parameter', 'merge_parameter', 'report_parameter') broadcasted_aggregate = computation_constructing_utils.create_federated_broadcast( aggregate) with self.assertRaisesRegex(ValueError, 'accumulate_parameter'): tree_analysis.check_broadcast_not_dependent_on_aggregate( broadcasted_aggregate)
def test_finds_broadcast_dependent_on_aggregate(self): aggregate = computation_test_utils.create_dummy_called_federated_aggregate( 'accumulate_parameter', 'merge_parameter', 'report_parameter') broadcasted_aggregate = building_block_factory.create_federated_broadcast( aggregate) with self.assertRaises(ValueError): tree_analysis.check_broadcast_not_dependent_on_aggregate( broadcasted_aggregate)