EDUCAÇÃO E TECNOLOGIA

Integration suite extension – Part 3 – What can a Dollar get you?


in varietate concordia (meaning: united in diversity) – Ernesto Teodoro Moneta (Nobel Peace Prize Laureate)

Happy holidays dear friends. While last year was challenging for every one of us, one positive thing we see is that it reinforces the fact that unity is our strength. And that if we stay united, we can overcome any challenge, not matter how big or tiny it is.

A dollar can get you 10 GB of blob storage per month on azure. Just in case if you are not following earlier blogs in this series, I strongly encourage you to go through Part 1 and Part 2 to get the context of what we are trying to build. In this blog, we will start loading our test cases. For structural data we use SAP BTP HANA cloud and for saving our test payloads, we use azure blob storage. As with other blogs, we will discuss the step by step implementation steps. The code repository is https://github.com/ravipativenu/integration-suite-extention . So let us get started.

Create TESTCASES table on SAP HANA cloud for saving our test cases.

CREATE TABLE "INTEGRATION_SUITE"."TESTCASES" ("ID" bigint NOT NULL primary key GENERATED BY DEFAULT AS IDENTITY, Name NVARCHAR(100), Testcase NVARCHAR(100), Description NVARCHAR(100), Method NVARCHAR(10), Input NVARCHAR(200));

The good thing about azure trial subscription is you do not need to spend the dollar on blob storage :). It is free. Create a storage container named “testcases” in azure blob storage as below.

Implement api /api/testing/testcases. A POST on this api uploads a test case to backend.

Create a struct for uploading the test case data

Method CreateTestCase creates test case in backend and uploads the payload data into azure blob storage.

Creating testcase in backend

Uploading test case payload to azure blob storage.

We can test api locally or by deploying to SAP BTP Kyma runtime. SAP BTP Kyma deployment steps are provided later in the blog.

Local Deployment API URL: POST http://localhost:9090/api/testing/testcases Kyma Deployment API URL: POST https://integration-suite-extention.c-4b20a39.kyma.shoot.live.k8s-hana.ondemand.com/

Payload:

“Filedata” element in payload is the base64 encoded format of the payload.

{ "Name" : "Scenario1_SOAP_To_Northwind_OData_Service", "Testcase" : "TestCase1", "Description" : "TestCase1 Description", "Filedata" : "PHNvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8iIHhtbG5zOmN4Zj0iaHR0cDovL2N4Zi5jb21wb25lbnQuY2FtZWwuYXBhY2hlLm9yZy8iPgogICA8c29hcGVudjpIZWFkZXIvPgogICA8c29hcGVudjpCb2R5PgogICAgICA8Y3hmOmludm9rZT4KICAgICAgICAgICAgICA8b3JkZXJOdW1iZXI+MTAyNDg8L29yZGVyTnVtYmVyPgogICAgICA8L2N4ZjppbnZva2U+CiAgIDwvc29hcGVudjpCb2R5Pgo8L3NvYXBlbnY6RW52ZWxvcGU+Cg==", "Filesize" : 5, "Filename" : "Test_Case1_Payload.txt", "Filetype" : "txt", "Method" : "POST"
}

Test api using postman

Result:

Test case is created in the backend. Input field will have the link to the payload stored in azure blob storage

Actual payload is stored in azure blob storage

Payload data

The api will provide the test cases from backend. GetTestCases method implement this api.

Test the api using postman

Local Deployment API URL: GET http://localhost:9090/api/testing/testcases Kyma Deployment API URL: GET https://integration-suite-extention.c-4b20a39.kyma.shoot.live.k8s-hana.ondemand.com/api/testing/testcases

Implement api to get test case payload from Azure blob storage. The api will get the payload data from azure blob storage, encode the payload with base64 encoding and send in response. Below methods implement this api

Test the api to get the payload of a test case. Using the Input URL we saved while loading the test case (below), retrieve the payload information. Pass the input url path as “id” parameter to the api

Local: GET http://localhost:9090/api/testing/payload?id=/Scenario1_SOAP_To_Northwind_OData_Service/TestCase1/Test_Case1_Payload.txt Kyma Deployment API URL: GET https://integration-suite-extention.c-4b20a39.kyma.shoot.live.k8s-hana.ondemand.com/api/testing/payload?id=/Scenario1_SOAP_To_Northwind_OData_Service/TestCase1/Test_Case1_Payload.txt

Result:

The api outputs a json with “data” element containing the base64 encoded payload data. We send base64 encoding of the payload data in api as in the next blog, the plan is to build an SAPUI5 app for maintaining our test cases. So the idea is SAPUI5 app will get the payload information from the api, decode it to display to the user.

Do docker build

docker build -t ravipativenu/integration-suite-extention:latest -f Dockerfile .

Do docker push

docker push ravipativenu/integration-suite-extention:latest

Deploy Kubernetes secret for accessing Azure blob storage


kubectl create secret generic azureblob --from-literal=AZUREBLOB_SECRET_ACCOUNTNAME='venublobstorage' --from-literal=AZUREBLOB_SECRET_MYACCOUNTKEY='key' --from-literal=AZUREBLOB_SECRET_MYACCOUNTURL='https://venublobstorage.blob.core.windows.net/'

azureblob secret created

Configure environment variables in deployment descriptor for azure blob storage access

Deploy to Kyma Kubernetes

kubectl replace --force -f deployment.yaml -n default

In this blog, we built apis to load test cases to our extension application. We also built apis to retrieve testcases from backend. We use SAP HANA cloud to store out test cases and we use azure blob storage for storing our payload data. We deployed the application version to SAP BTP kyma runtime and finally tested all our apis. The repo is https://github.com/ravipativenu/integration-suite-extention . In next blog we will build an SAPUI5 app to manage our test cases. we will use the apis we built here to fuel the SAPUI5 app. If you are interested, stay tuned for the next blog. Please feel free to provide your comments and feedback.

Wish you all a very happy and prosperous new Year… 🙂