#!/usr/bin/env python3 """Test if properties are now being extracted from action mappings""" import sys sys.path.insert(0, r'C:\DEV\COPILOT\geutebruck-api\src\api') import grpc from protos import configuration_pb2 from protos import configuration_pb2_grpc def test_property_extraction(): """Test property extraction from complex action mappings""" print("Connecting to SDK Bridge...") with grpc.insecure_channel('localhost:50051') as channel: stub = configuration_pb2_grpc.ConfigurationServiceStub(channel) # Get action mappings request = configuration_pb2.ReadActionMappingsRequest() response = stub.ReadActionMappings(request) if not response.success: print(f"Failed: {response.error_message}") return False print(f"Success! Got {response.total_count} action mappings") # Look at the 3 mappings that should have properties # Based on earlier analysis: # - Node 19272 (offset 267879) - GSC error message # - Node 19720 (offset 277187) - CrossSwitch with VideoInput/VideoOutput # - Node 19731 (offset 277470) - CrossSwitch with VideoInput/VideoOutput target_offsets = [267879, 277187, 277470] print(f"\nLooking for mappings at specific offsets...") for offset in target_offsets: mapping = None for m in response.mappings: if m.start_offset == offset: mapping = m break if mapping: print(f"\n{'='*80}") print(f"Mapping at offset {offset}:") print(f" Old format actions: {len(mapping.actions)}") for i, action in enumerate(mapping.actions): print(f" [{i}] {action}") # Note: Properties are stored in ConfigNode.Children, but protobuf # ConfigActionMapping doesn't have a children field yet. # We need to update ConfigurationServiceImplementation to convert # children to parameters. print(f" Input actions: {len(mapping.input_actions)}") print(f" Output actions: {len(mapping.output_actions)}") else: print(f"\nMapping at offset {offset} not found") # Also check first mapping print(f"\n{'='*80}") print(f"First mapping (for reference):") m = response.mappings[0] print(f" Offset: {m.start_offset}") print(f" Old format actions: {len(m.actions)}") for i, action in enumerate(m.actions[:3]): print(f" [{i}] {action}") print(f" Input actions: {len(m.input_actions)}") print(f" Output actions: {len(m.output_actions)}") return True if __name__ == '__main__': test_property_extraction()