-- AB CIP e2e smoke seed — closes #211 (umbrella #209). -- -- One-cluster seed pointing at the ab_server ControlLogix fixture -- (`docker compose -f tests/ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests/Docker/docker-compose.yml --profile controllogix up -d`). -- Publishes a single `TestDINT:DInt` tag under NodeId `ns=;s=TestDINT` -- (ab_server seeds this tag by default). -- -- Usage: -- sqlcmd -S "localhost,14330" -d OtOpcUaConfig -U sa -P "OtOpcUaDev_2026!" \ -- -i scripts/smoke/seed-abcip-smoke.sql -- -- After seeding, point appsettings at this cluster: -- Node:NodeId = "abcip-smoke-node" -- Node:ClusterId = "abcip-smoke" -- Then start server + run `./scripts/e2e/test-abcip.ps1 -BridgeNodeId "ns=2;s=TestDINT"`. SET NOCOUNT ON; SET XACT_ABORT ON; SET QUOTED_IDENTIFIER ON; SET ANSI_NULLS ON; SET ANSI_PADDING ON; SET ANSI_WARNINGS ON; SET ARITHABORT ON; SET CONCAT_NULL_YIELDS_NULL ON; DECLARE @ClusterId nvarchar(64) = 'abcip-smoke'; DECLARE @NodeId nvarchar(64) = 'abcip-smoke-node'; DECLARE @DrvId nvarchar(64) = 'abcip-smoke-drv'; DECLARE @NsId nvarchar(64) = 'abcip-smoke-ns'; DECLARE @AreaId nvarchar(64) = 'abcip-smoke-area'; DECLARE @LineId nvarchar(64) = 'abcip-smoke-line'; DECLARE @EqId nvarchar(64) = 'abcip-smoke-eq'; DECLARE @EqUuid uniqueidentifier = '41BC12E0-41BC-412E-841B-C12E041BC12E'; DECLARE @TagId nvarchar(64) = 'abcip-smoke-tag-testdint'; BEGIN TRAN; DELETE FROM dbo.Tag WHERE TagId IN (@TagId); DELETE FROM dbo.Equipment WHERE EquipmentId = @EqId; DELETE FROM dbo.UnsLine WHERE UnsLineId = @LineId; DELETE FROM dbo.UnsArea WHERE UnsAreaId = @AreaId; DELETE FROM dbo.DriverInstance WHERE DriverInstanceId = @DrvId; DELETE FROM dbo.Namespace WHERE NamespaceId = @NsId; DELETE FROM dbo.ConfigGeneration WHERE ClusterId = @ClusterId; DELETE FROM dbo.ClusterNodeCredential WHERE NodeId = @NodeId; DELETE FROM dbo.ClusterNodeGenerationState WHERE NodeId = @NodeId; DELETE FROM dbo.ClusterNode WHERE NodeId = @NodeId; DELETE FROM dbo.ServerCluster WHERE ClusterId = @ClusterId; DELETE FROM dbo.ClusterNodeCredential WHERE Kind = 'SqlLogin' AND Value = 'sa'; INSERT dbo.ServerCluster(ClusterId, Name, Enterprise, Site, NodeCount, RedundancyMode, Enabled, CreatedBy) VALUES (@ClusterId, 'AB CIP Smoke', 'zb', 'lab', 1, 'None', 1, 'abcip-smoke'); INSERT dbo.ClusterNode(NodeId, ClusterId, RedundancyRole, Host, OpcUaPort, DashboardPort, ApplicationUri, ServiceLevelBase, Enabled, CreatedBy) VALUES (@NodeId, @ClusterId, 'Primary', 'localhost', 4840, 15050, 'urn:OtOpcUa:abcip-smoke-node', 200, 1, 'abcip-smoke'); INSERT dbo.ClusterNodeCredential(NodeId, Kind, Value, Enabled, CreatedBy) VALUES (@NodeId, 'SqlLogin', 'sa', 1, 'abcip-smoke'); DECLARE @Gen bigint; INSERT dbo.ConfigGeneration(ClusterId, Status, CreatedBy) VALUES (@ClusterId, 'Draft', 'abcip-smoke'); SET @Gen = SCOPE_IDENTITY(); INSERT dbo.Namespace(GenerationId, NamespaceId, ClusterId, Kind, NamespaceUri, Enabled) VALUES (@Gen, @NsId, @ClusterId, 'Equipment', 'urn:abcip-smoke:eq', 1); INSERT dbo.UnsArea(GenerationId, UnsAreaId, ClusterId, Name) VALUES (@Gen, @AreaId, @ClusterId, 'lab-floor'); INSERT dbo.UnsLine(GenerationId, UnsLineId, UnsAreaId, Name) VALUES (@Gen, @LineId, @AreaId, 'abcip-line'); INSERT dbo.Equipment(GenerationId, EquipmentId, EquipmentUuid, DriverInstanceId, UnsLineId, Name, MachineCode, Enabled) VALUES (@Gen, @EqId, @EqUuid, @DrvId, @LineId, 'ab-sim', 'abcip-001', 1); -- AB CIP DriverInstance — single ControlLogix device at the ab_server fixture -- gateway. DriverConfig shape mirrors AbCipDriverConfigDto. INSERT dbo.DriverInstance(GenerationId, DriverInstanceId, ClusterId, NamespaceId, Name, DriverType, DriverConfig, Enabled) VALUES (@Gen, @DrvId, @ClusterId, @NsId, 'ab-server-smoke', 'AbCip', N'{ "TimeoutMs": 2000, "Devices": [ { "HostAddress": "ab://127.0.0.1:44818/1,0", "PlcFamily": "ControlLogix", "DeviceName": "ab-server" } ], "Probe": { "Enabled": true, "IntervalMs": 5000, "TimeoutMs": 2000 }, "Tags": [ { "Name": "TestDINT", "DeviceHostAddress": "ab://127.0.0.1:44818/1,0", "TagPath": "TestDINT", "DataType": "DInt", "Writable": true, "WriteIdempotent": true } ] }', 1); INSERT dbo.Tag(GenerationId, TagId, DriverInstanceId, EquipmentId, Name, DataType, AccessLevel, TagConfig, WriteIdempotent) VALUES (@Gen, @TagId, @DrvId, @EqId, 'TestDINT', 'Int32', 'ReadWrite', N'{"FullName":"TestDINT","DataType":"DInt"}', 1); EXEC dbo.sp_PublishGeneration @ClusterId = @ClusterId, @DraftGenerationId = @Gen, @Notes = N'AB CIP smoke — task #211'; COMMIT; PRINT ''; PRINT 'AB CIP smoke seed complete.'; PRINT ' Cluster: ' + @ClusterId; PRINT ' Node: ' + @NodeId; PRINT ' Generation: ' + CONVERT(nvarchar(20), @Gen); PRINT ''; PRINT 'Next steps:'; PRINT ' 1. Set src/.../Server/appsettings.json Node:NodeId = "abcip-smoke-node"'; PRINT ' Node:ClusterId = "abcip-smoke"'; PRINT ' 2. docker compose -f tests/.../AbCip.IntegrationTests/Docker/docker-compose.yml --profile controllogix up -d'; PRINT ' 3. dotnet run --project src/ZB.MOM.WW.OtOpcUa.Server'; PRINT ' 4. ./scripts/e2e/test-abcip.ps1 -BridgeNodeId "ns=2;s=TestDINT"';