I’m trying to automate test plan execution on a server using the Runner plugin, but I’m writing our client in Python using the nats-py package and I can’t get any “SetTestPlanXML” request to succeed. I’ve been able to connect and process other requests (start a session, shutdown the session, and get sessions/images), but any time I try to send a test plan XML as a string, the Runner doesn’t reply after logging the following:
[23:06:04 DBG] Request: OpenTap.Runner.OPENTAP-RUNNER.Session.faf54112-3a60-4844-ac52-babf65eb1d7e.Request.SetTestPlanXML (_INBOX.WTuIZUdGSQixG6966AXFwD.WTuIZUdGSQixG6966AXG6749f2)
This is the raw message sent over TCP by NATS (with my sample test plan saved from Editor X included):
NATS/1.0
ChunkSize: 512000
RequestId: 725afa9a-41bb-4c6f-9bb1-80b1f8a528ad
ChunkNumber: 1
<?xml version="1.0" encoding="utf-8"?>
<TestPlan type="OpenTap.TestPlan">
<Steps>
<TestStep type="OpenTap.Plugins.BasicSteps.LogStep" Id="1f40a400-3b0e-407d-bd23-7b36b489c2fb">
<LogMessage>Running plan</LogMessage>
<Severity>Info</Severity>
<Name Metadata="Step Name">Log Output</Name>
<ChildTestSteps />
</TestStep>
<TestStep type="OpenTap.Plugins.BasicSteps.DelayStep" Id="f6fb6547-2c8a-41bd-96a9-d5b2d43c1830">
<DelaySecs>1</DelaySecs>
<Name Metadata="Step Name">Delay</Name>
<ChildTestSteps />
</TestStep>
<TestStep type="OpenTap.Plugins.BasicSteps.LogStep" Id="96eb0b3a-2c08-455f-a117-00a9b91aa0f6">
<LogMessage>Good!</LogMessage>
<Severity>Info</Severity>
<Name Metadata="Step Name">Log Output (1)</Name>
<ChildTestSteps />
</TestStep>
</Steps>
<Package.Dependencies>
<Package Name="OpenTAP" Version="^9.28.3+8349ea70" />
</Package.Dependencies>
</TestPlan>
As shown, I tried adding ChunkSize, RequestId, and ChunkNumber headers to mirror the traffic between Editor X and its backend process (which seems to be an old Runner version?) but still nothing. The Runner will still accept requests afterwards, but there are no logs for the request being started or processed either. Is there a separate stream/process for setting TestPlans I’m missing besides saving/loading from a repository (which I currently don’t have set up)? The Runner API Documentation isn’t very descriptive and it’s also disappointing the source code for the Runner isn’t available to dig a little more and trace the logic.
For reference, I’m on OpenTap 9.28.3 with Runner 1.16.1 (I also tried rolling back to 1.15 and 1.9, the last version in the API changelog), but no other plugins. Any help would be greatly appreciated!