[Accel-config] [PATCH v1 4/5] accel-config/test: add test_memory function to remove 5 opcode test duplicated parts

Tony Zhu <tony.zhu at intel.com> Tue, 30 Nov 2021 18:51:31 +0800
Newsgroups dev.linux.lists.accel-config
Message-ID <[email protected]>
5 opcode test are same to allocate initialize device, define the test_memory function
to remove redundant test code.

Signed-off-by: Tony Zhu <tony.zhu(a)intel.com>
---
 test/dsa_test.c | 312 ++++++++++++++++++------------------------------
 1 file changed, 118 insertions(+), 194 deletions(-)

diff --git a/test/dsa_test.c b/test/dsa_test.c
index 61c8ba2..cd3bd50 100644
--- a/test/dsa_test.c
+++ b/test/dsa_test.c
@@ -130,6 +130,118 @@ static int test_noop(struct dsa_context *ctx, int tflags)
 	return rc;
 }
 
+static int test_memory(struct dsa_context *ctx, size_t buf_size,
+		       int tflags, uint32_t opcode)
+{
+	struct task *tsk;
+	int rc;
+
+	info("mem: len %#lx tflags %#x opcode %d\n", buf_size, tflags, opcode);
+
+	ctx->is_batch = 0;
+
+	rc = alloc_task(ctx);
+	if (rc != DSA_STATUS_OK) {
+		err("mem: alloc task failed opcode %d, rc=%d\n", opcode, rc);
+		return rc;
+	}
+
+	tsk = ctx->single_task;
+	rc = init_task(tsk, tflags, opcode, buf_size);
+	if (rc != DSA_STATUS_OK) {
+		err("mem: init task failed opcode %d, rc=%d\n", opcode, rc);
+		return rc;
+	}
+
+	switch (opcode) {
+	case DSA_OPCODE_MEMMOVE:
+		rc = dsa_memcpy(ctx);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+
+		rc = task_result_verify(tsk, 0);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+		break;
+
+	case DSA_OPCODE_MEMFILL:
+		rc = dsa_memfill(ctx);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+
+		rc = task_result_verify(tsk, 0);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+		break;
+
+	case DSA_OPCODE_COMPARE:
+		rc = dsa_compare(ctx);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+
+		rc = task_result_verify(tsk, 0);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+
+		info("Testing mismatch buffers\n");
+		info("creating a diff at index %#lx\n", tsk->xfer_size / 2);
+		((uint8_t *)(tsk->src1))[tsk->xfer_size / 2] = 0;
+		((uint8_t *)(tsk->src2))[tsk->xfer_size / 2] = 1;
+
+		memset(tsk->comp, 0, sizeof(struct dsa_completion_record));
+
+		rc = dsa_compare(ctx);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+
+		rc = task_result_verify(tsk, 1);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+		break;
+
+	case DSA_OPCODE_COMPVAL:
+		rc = dsa_compval(ctx);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+
+		rc = task_result_verify(tsk, 0);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+
+		info("Testing mismatching buffers\n");
+		info("creating a diff at index %#lx\n", tsk->xfer_size / 2);
+		((uint8_t *)(tsk->src1))[tsk->xfer_size / 2] =
+				~(((uint8_t *)(tsk->src1))[tsk->xfer_size / 2]);
+
+		memset(tsk->comp, 0, sizeof(struct dsa_completion_record));
+
+		rc = dsa_compval(ctx);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+
+		rc = task_result_verify(tsk, 1);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+		break;
+
+	case DSA_OPCODE_DUALCAST:
+		rc = dsa_dualcast(ctx);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+
+		rc = task_result_verify(tsk, 0);
+		if (rc != DSA_STATUS_OK)
+			return rc;
+		break;
+
+	default:
+		err("Unsupported opcode %#x\n", opcode);
+		return -EINVAL;
+	}
+
+	return rc;
+}
+
 int main(int argc, char *argv[])
 {
 	struct dsa_context *dsa;
@@ -220,203 +332,15 @@ int main(int argc, char *argv[])
 			goto error;
 		break;
 
-	case DSA_OPCODE_MEMMOVE: {
-		struct task *tsk;
-
-		info("memcpy: len %#lx tflags %#x\n", buf_size, tflags);
-
-		rc = alloc_task(dsa);
-		if (rc != DSA_STATUS_OK) {
-			err("memcpy: alloc task failed, rc=%d\n", rc);
-			goto error;
-		}
-
-		tsk = dsa->single_task;
-		rc = init_task(tsk, tflags, opcode, buf_size);
-		if (rc != DSA_STATUS_OK) {
-			err("memcpy: init task failed\n");
-			goto error;
-		}
-
-		rc = dsa_memcpy(dsa);
-		if (rc != DSA_STATUS_OK) {
-			err("memcpy failed stat %d\n", rc);
-			rc = -ENXIO;
-			break;
-		}
-
-		rc = task_result_verify(tsk, 0);
-		if (rc != DSA_STATUS_OK)
-			goto error;
-
-		break;
-	}
-
-	case DSA_OPCODE_MEMFILL: {
-		struct task *tsk;
-
-		info("memfill: len %#lx tflags %#x\n", buf_size, tflags);
-
-		rc = alloc_task(dsa);
-		if (rc != DSA_STATUS_OK) {
-			err("memfill: alloc task failed, rc=%d\n", rc);
-			goto error;
-		}
-
-		tsk = dsa->single_task;
-		rc = init_task(tsk, tflags, opcode, buf_size);
-		if (rc != DSA_STATUS_OK) {
-			err("memfill: init task failed\n");
-			goto error;
-		}
-
-		rc = dsa_memfill(dsa);
-		if (rc != DSA_STATUS_OK) {
-			err("memfill failed stat %d\n", rc);
-			rc = -ENXIO;
-			goto error;
-		}
-
-		rc = task_result_verify(tsk, 0);
-		if (rc != DSA_STATUS_OK)
-			goto error;
-
-		break;
-	}
-
-	case DSA_OPCODE_COMPARE: {
-		struct task *tsk;
-
-		info("compare: matching buffers len %#lx tflags %#x\n",
-		     buf_size, tflags);
-
-		rc = alloc_task(dsa);
-		if (rc != DSA_STATUS_OK) {
-			err("compare: alloc task failed, rc=%d\n", rc);
-			goto error;
-		}
-
-		tsk = dsa->single_task;
-		rc = init_task(tsk, tflags, opcode, buf_size);
-		if (rc != DSA_STATUS_OK) {
-			err("compare: init task failed\n");
-			goto error;
-		}
-
-		rc = dsa_compare(dsa);
-		if (rc != DSA_STATUS_OK) {
-			err("compare1 failed stat %d\n", rc);
-			rc = -ENXIO;
-			goto error;
-		}
-
-		rc = task_result_verify(tsk, 0);
-		if (rc != DSA_STATUS_OK)
-			goto error;
-
-		info("Testing mismatch buffers\n");
-		info("creating a diff at index %#lx\n", tsk->xfer_size / 2);
-		((uint8_t *)(tsk->src1))[tsk->xfer_size / 2] = 0;
-		((uint8_t *)(tsk->src2))[tsk->xfer_size / 2] = 1;
-
-		memset(tsk->comp, 0, sizeof(struct dsa_completion_record));
-
-		rc = dsa_compare(dsa);
-		if (rc != DSA_STATUS_OK) {
-			err("compare2 failed stat %d\n", rc);
-			rc = -ENXIO;
-			goto error;
-		}
-
-		rc = task_result_verify(tsk, 1);
-		if (rc != DSA_STATUS_OK)
-			goto error;
-
-		break;
-	}
-
-	case DSA_OPCODE_COMPVAL: {
-		struct task *tsk;
-
-		info("compval: matching buffer len %#lx tflags %#x\n",
-		     buf_size, tflags);
-
-		rc = alloc_task(dsa);
-		if (rc != DSA_STATUS_OK) {
-			err("compval: alloc task failed, rc=%d\n", rc);
-			goto error;
-		}
-
-		tsk = dsa->single_task;
-		rc = init_task(tsk, tflags, opcode, buf_size);
-		if (rc != DSA_STATUS_OK) {
-			err("compval: init task failed\n");
-			goto error;
-		}
-
-		rc = dsa_compval(dsa);
-		if (rc != DSA_STATUS_OK) {
-			err("compval1 failed stat %d\n", rc);
-			rc = -ENXIO;
-			goto error;
-		}
-
-		rc = task_result_verify(tsk, 0);
-		if (rc != DSA_STATUS_OK)
-			goto error;
-
-		info("Testing mismatching buffers\n");
-		info("creating a diff at index %#lx\n", tsk->xfer_size / 2);
-		((uint8_t *)(tsk->src1))[tsk->xfer_size / 2] =
-				~(((uint8_t *)(tsk->src1))[tsk->xfer_size / 2]);
-
-		memset(tsk->comp, 0, sizeof(struct dsa_completion_record));
-
-		rc = dsa_compval(dsa);
-		if (rc != DSA_STATUS_OK) {
-			err("compval2 failed stat %d\n", rc);
-			rc = -ENXIO;
-			goto error;
-		}
-
-		rc = task_result_verify(tsk, 1);
-		if (rc != DSA_STATUS_OK)
-			goto error;
-
-		break;
-	}
-
-	case DSA_OPCODE_DUALCAST: {
-		struct task *tsk;
-
-		info("dualcast: len %#lx tflags %#x\n", buf_size, tflags);
-
-		rc = alloc_task(dsa);
-		if (rc != DSA_STATUS_OK) {
-			err("dualcast: alloc task failed, rc=%d\n", rc);
-			goto error;
-		}
-
-		tsk = dsa->single_task;
-		rc = init_task(tsk, tflags, opcode, buf_size);
-		if (rc != DSA_STATUS_OK) {
-			err("dualcast: init task failed\n");
-			goto error;
-		}
-
-		rc = dsa_dualcast(dsa);
-		if (rc != DSA_STATUS_OK) {
-			err("dualcast failed stat %d\n", rc);
-			rc = -ENXIO;
-			goto error;
-		}
-
-		rc = task_result_verify(tsk, 0);
+	case DSA_OPCODE_MEMMOVE:
+	case DSA_OPCODE_MEMFILL:
+	case DSA_OPCODE_COMPARE:
+	case DSA_OPCODE_COMPVAL:
+	case DSA_OPCODE_DUALCAST:
+		rc = test_memory(dsa, buf_size, tflags, opcode);
 		if (rc != DSA_STATUS_OK)
 			goto error;
-
 		break;
-	}
 
 	default:
 		rc = -EINVAL;
-- 
2.27.0