test_astlpc: Add network_{init,destroy}() helpers

Make it easy to set up two endpoints that have completed the binding
initialisation sequence and a ready to send messages.

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Change-Id: I0efa8fdd69e1635adfa84823ba0402023b643216
diff --git a/tests/test_astlpc.c b/tests/test_astlpc.c
index 9e77b9e..e95673a 100644
--- a/tests/test_astlpc.c
+++ b/tests/test_astlpc.c
@@ -172,13 +172,48 @@
 	mctp_destroy(ep->mctp);
 }
 
+struct astlpc_test {
+	struct astlpc_endpoint bmc;
+	struct astlpc_endpoint host;
+	uint8_t kcs[2];
+	uint8_t *lpc_mem;
+};
+
+static void network_init(struct astlpc_test *ctx)
+{
+	const size_t lpc_size = 1 * 1024 * 1024;
+
+	ctx->lpc_mem = calloc(1, lpc_size);
+	assert(ctx->lpc_mem);
+
+	/* BMC initialisation */
+	endpoint_init(&ctx->bmc, 8, MCTP_BINDING_ASTLPC_MODE_BMC, &ctx->kcs,
+		      ctx->lpc_mem, lpc_size);
+
+	/* Host initialisation */
+	endpoint_init(&ctx->host, 9, MCTP_BINDING_ASTLPC_MODE_HOST, &ctx->kcs,
+		      ctx->lpc_mem, lpc_size);
+
+	/* BMC processes host channel init request, alerts host */
+	mctp_astlpc_poll(ctx->bmc.astlpc);
+	assert(ctx->kcs[KCS_REG_STATUS] & KCS_STATUS_CHANNEL_ACTIVE);
+	assert(ctx->kcs[KCS_REG_DATA] == 0xff);
+
+	/* Host dequeues channel init result */
+	mctp_astlpc_poll(ctx->host.astlpc);
+}
+
+static void network_destroy(struct astlpc_test *ctx)
+{
+	endpoint_destroy(&ctx->bmc);
+	endpoint_destroy(&ctx->host);
+	free(ctx->lpc_mem);
+}
+
 static void astlpc_test_packetised_message_bmc_to_host(void)
 {
+	struct astlpc_test ctx = { 0 };
 	uint8_t msg[2 * MCTP_BTU];
-	struct astlpc_endpoint bmc, host;
-	size_t lpc_size;
-	uint8_t kcs[2] = { 0 };
-	void *lpc_mem;
 	int rc;
 
 	/* Test harness initialisation */
@@ -186,55 +221,37 @@
 	memset(&msg[0], 0x5a, MCTP_BTU);
 	memset(&msg[MCTP_BTU], 0xa5, MCTP_BTU);
 
-	lpc_size = 1 * 1024 * 1024;
-	lpc_mem = calloc(1, lpc_size);
-	assert(lpc_mem);
-
-	/* BMC initialisation */
-	endpoint_init(&bmc, 8, MCTP_BINDING_ASTLPC_MODE_BMC, &kcs, lpc_mem,
-		      lpc_size);
-
-	/* Host initialisation */
-	endpoint_init(&host, 9, MCTP_BINDING_ASTLPC_MODE_HOST, &kcs, lpc_mem,
-		      lpc_size);
-
-	/* BMC receives host channel init request */
-	mctp_astlpc_poll(bmc.astlpc);
-
-	/* Host dequeues data */
-	mctp_astlpc_poll(host.astlpc);
+	network_init(&ctx);
 
 	/* BMC sends a message */
-	rc = mctp_message_tx(bmc.mctp, 9, msg, sizeof(msg));
+	rc = mctp_message_tx(ctx.bmc.mctp, 9, msg, sizeof(msg));
 	assert(rc == 0);
-	assert(kcs[MCTP_ASTLPC_KCS_REG_STATUS] & KCS_STATUS_OBF);
-	assert(kcs[MCTP_ASTLPC_KCS_REG_DATA] == 0x01);
+	assert(ctx.kcs[MCTP_ASTLPC_KCS_REG_STATUS] & KCS_STATUS_OBF);
+	assert(ctx.kcs[MCTP_ASTLPC_KCS_REG_DATA] == 0x01);
 
 	/* Verify it's the packet we expect */
-	assert(!memcmp(lpc_mem + RX_BUFFER_DATA, &msg[0], MCTP_BTU));
+	assert(!memcmp(ctx.lpc_mem + RX_BUFFER_DATA, &msg[0], MCTP_BTU));
 
 	/* Host receives a packet */
-	mctp_astlpc_poll(host.astlpc);
+	mctp_astlpc_poll(ctx.host.astlpc);
 
 	/* Host returns Rx area ownership to BMC */
-	assert(!(kcs[MCTP_ASTLPC_KCS_REG_STATUS] & KCS_STATUS_OBF));
-	assert(kcs[MCTP_ASTLPC_KCS_REG_DATA] == 0x02);
-	assert(kcs[MCTP_ASTLPC_KCS_REG_STATUS] & KCS_STATUS_IBF);
+	assert(!(ctx.kcs[MCTP_ASTLPC_KCS_REG_STATUS] & KCS_STATUS_OBF));
+	assert(ctx.kcs[MCTP_ASTLPC_KCS_REG_DATA] == 0x02);
+	assert(ctx.kcs[MCTP_ASTLPC_KCS_REG_STATUS] & KCS_STATUS_IBF);
 
 	/* BMC dequeues ownership hand-over and sends the queued packet */
-	rc = mctp_astlpc_poll(bmc.astlpc);
+	rc = mctp_astlpc_poll(ctx.bmc.astlpc);
 	assert(rc == 0);
 
 	/* Host receives a message */
-	assert(kcs[MCTP_ASTLPC_KCS_REG_STATUS] & KCS_STATUS_OBF);
-	assert(kcs[MCTP_ASTLPC_KCS_REG_DATA] == 0x01);
+	assert(ctx.kcs[MCTP_ASTLPC_KCS_REG_STATUS] & KCS_STATUS_OBF);
+	assert(ctx.kcs[MCTP_ASTLPC_KCS_REG_DATA] == 0x01);
 
 	/* Verify it's the packet we expect */
-	assert(!memcmp(lpc_mem + RX_BUFFER_DATA, &msg[MCTP_BTU], MCTP_BTU));
+	assert(!memcmp(ctx.lpc_mem + RX_BUFFER_DATA, &msg[MCTP_BTU], MCTP_BTU));
 
-	endpoint_destroy(&bmc);
-	endpoint_destroy(&host);
-	free(lpc_mem);
+	network_destroy(&ctx);
 }
 
 static void astlpc_test_simple_init(void)