bt2: raise an exception if an AutoSourceComponentSpec produces no component
[babeltrace.git] / src / bindings / python / bt2 / bt2 / trace_collection_message_iterator.py
index 56b48da9ff8061fe4a96e70870495ec711c313a2..3003c5f3730f8fdf9e3f4f6b7ba8a75a1e8cc9a2 100644 (file)
@@ -130,6 +130,8 @@ def _auto_discover_source_component_specs(auto_source_comp_specs, plugin_set):
     comp_specs_raw = res['results']
     assert type(comp_specs_raw) == bt2.ArrayValue
 
+    used_input_indices = set()
+
     for comp_spec_raw in comp_specs_raw:
         assert type(comp_spec_raw) == bt2.ArrayValue
         assert len(comp_spec_raw) == 4
@@ -171,6 +173,8 @@ def _auto_discover_source_component_specs(auto_source_comp_specs, plugin_set):
             if orig_spec.obj is not AutoSourceComponentSpec._no_obj:
                 obj = orig_spec.obj
 
+            used_input_indices.add(int(idx))
+
         params['inputs'] = comp_inputs
 
         comp_specs.append(
@@ -183,6 +187,17 @@ def _auto_discover_source_component_specs(auto_source_comp_specs, plugin_set):
             )
         )
 
+    if len(used_input_indices) != len(inputs):
+        unused_input_indices = set(range(len(inputs))) - used_input_indices
+        unused_input_indices = sorted(unused_input_indices)
+        unused_inputs = [str(inputs[x]) for x in unused_input_indices]
+
+        msg = (
+            'Some auto source component specs did not produce any component: '
+            + ', '.join(unused_inputs)
+        )
+        raise RuntimeError(msg)
+
     return comp_specs
 
 
This page took 0.023678 seconds and 4 git commands to generate.