""" Final test: Create mapping with ALL correct fields - Filters: .SwitchMode, .VideoInput, .VideoOutput - Secondary flag = 100 (CRITICAL!) - Fields: SwitchMode, VideoInput, VideoOutput """ import grpc import sys import io sys.path.append(r'C:\DEV\COPILOT\geutebruck-api\src\api') if sys.platform == 'win32': sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8') from protos import configuration_pb2 from protos import configuration_pb2_grpc print("="*70) print("FINAL TEST: COMPLETE MAPPING STRUCTURE") print("="*70) channel = grpc.insecure_channel('localhost:50051') stub = configuration_pb2_grpc.ConfigurationServiceStub(channel) # Get current count print("\n1. Getting current mapping count...") request = configuration_pb2.ReadActionMappingsRequest() response = stub.ReadActionMappings(request) initial_count = len(response.mappings) print(f" Initial count: {initial_count}") # Create mapping with complete structure print("\n2. Creating mapping with COMPLETE structure...") param1 = configuration_pb2.ActionParameter(name="PreAlarm", value="10") param2 = configuration_pb2.ActionParameter(name="Alarm", value="60") output1 = configuration_pb2.ActionDefinition( action="GCoreDataBase", parameters=[param1, param2] ) output2 = configuration_pb2.ActionDefinition( action="GscMail" ) mapping = configuration_pb2.ActionMappingInput( name="API_CREATED_FINAL_TEST", video_input=101027, # Triggers all filter/field creation output_actions=[output1, output2] ) create_request = configuration_pb2.CreateActionMappingRequest(mapping=mapping) create_response = stub.CreateActionMapping(create_request) print(f" Success: {create_response.success}") print(f" Message: {create_response.message}") if not create_response.success: print(f" ERROR: {create_response.error_message}") sys.exit(1) # Verify print("\n3. Verifying...") verify_response = stub.ReadActionMappings(configuration_pb2.ReadActionMappingsRequest()) final_count = len(verify_response.mappings) print(f" Initial: {initial_count}") print(f" Final: {final_count}") print(f" Increased: {final_count > initial_count}") # Find the new mapping found = False for m in verify_response.mappings: if "API_CREATED_FINAL_TEST" in m.name: found = True print(f"\n [SUCCESS] Found mapping: {m.name}") print(f" Input actions: {len(m.input_actions)}") print(f" Output actions: {len(m.output_actions)}") break if not found: print("\n [FAIL] Mapping not found in API response") print(f"\n{'='*70}") print("DONE! Now reconnect GeViSet and check if you can see:") print(" 'API_CREATED_FINAL_TEST'") print("This mapping should be VISIBLE with:") print(" - Secondary flag = 100") print(" - All 3 filters (.SwitchMode, .VideoInput, .VideoOutput)") print(" - All 3 fields (SwitchMode, VideoInput, VideoOutput)") print(f"{'='*70}")