I stumbled upon this blog post, which describes the Kubernetes e2e test suite.
Unfortunately, there are not enough resources to explain how to use the framework to build custom tests that can run part of the CI pipeline.
How can I use that Go framework? or am I better off building my own framework using any Kubernetes clients' libraries?
Related
having issue by switching to cloud build. Before we were using other platform and just started the grade build. We use spring boot and testcontainers for tests. Now in cloud build the gradle project is going to be built by buildpack. Gradle builds our project and runs tests. These integration tests are failing because testcontainers cannot start required containers. What can be enabled in the cloudbuild.yml to make it possible?
steps:
- name: gcr.io/k8s-skaffold/pack
args:
- build
- '$_GCR_HOSTNAME/$PROJECT_ID/$_SERVICE_NAME:$COMMIT_SHA'
- '--env'
- 'BP_GRADLE_BUILD_ARGUMENTS=$_GRADLE_ARGS'
- '--tag=$_GCR_HOSTNAME/$PROJECT_ID/$_SERVICE_NAME:$_TAG_2'
- '--builder=paketobuildpacks/builder:base'
- '--path=.'
id: Buildpack
entrypoint: pack
Thank you in advance.
To keep this question from being complete unanswered, I recommend that anyone who wishes to perform multi-container integration tests to use the following Github Repository as a reference:
https://github.com/GoogleCloudPlatform/cloudbuild-integration-testing
And to answer OP's question specifically:
There's no need to enable anything specific in order to test things, but integration testing for containers is best performed by other containers that wait for the containers to be built before running tests, as can be seen in this file
Does anyone have experience with running Spring Cloud Micro Services in production?
I have about 10 micro services within one big Maven multi-project. This means that all the source code is under a single repo. The advantages are that it is easy to check out and manage the project in my IDE.
My concern is with CI as it means that the build server will need to figure out which services changed and deploy them respectively. Alternatively all the micro services will be deployed every time a change is committed.
I'm eyeing exploding the project into a source repo per micro service (my gut feel is that this is the correct approach). This way only the affected service is deployed.
My goal is to run every micro service as a container on Kubernetes.
Do you have any advise / tips / concerns that you can raise that might be an unwelcome surprise down the line?
More important than separating codebase is to create a separate CI/CD pipeline per microservice (running its own unit and integration tests), and another pipeline to integrate all microservices and run end-to-end tests.
Since you plan to release your microservices as Docker containers, consider a Docker Registry for versioning and distribution of your images.
Here are some references that follow this idea: DZone, Microsoft
I need few answer for my doubt:
Pact-mock-service Vs pact-jvm-server, is both are same? Pls describe this.
Am implementing the PACT in java-maven
I can able to run this:
https://github.com/anha1/microservices-pact-maven
https://github.com/warmuuh/pactbroker-maven-plugin
Help me to understand this with pact-mock-service and pact-jvm-server
Pact-mock-service is a general mock server built into the pact libraries to support mocking out the other dependency in an integration during a consumer test. If you use any of the consumer test support libraries, you do not need to use it directly.
pact-jvm-server is a controllable server that bundles the Pact-mock-service and allows you to setup and tear down mock servers via HTTP requests. It exists for people who can not,or do not wish to use the consumer test support libraries.
For people using Maven, there is a plugin provided as part of the pact-jvm project that can do provider verification tests and publish to a pact broker. For the consumer tests, they just run as JUnit tests so you don't need any Maven specific plugin.
Of the two links you posted, the first is an example project using a spring-boot application, and the second is a maven plugin that provides publishing to a pact broker only.
We have a number of Unit Tests written using IID for the modules we've developed. We want them to run on our CI server
We use Maven for build sand JUnit to run the tests. Is there a way to mavenise BPM tests and run them via JUnit. If no then how could we implement a build and deploy to our CI server?
Thanks
Actually, you can. Have a look at http://www.ibm.com/developerworks/bpm/bpmjournal/1412_cai/1412_cai.html .
The solution you are looking for called IBM Business Process Manager Testing Asset.
There is one clue - you have to contact IBM Software Services for WebSphere to get it.
I have developed a stack of web Services based on:
Spring ws 2.0 with jaxb2 maven plugin (to ease the pain).
Hibernate.
PostgResql.
We are using the following to test:
Junit test with Mockito.
Spring test for Dao & service layer.
The new Spring ws test & Smock api.
SoapUi Api for testing with their maven plugin.
We have TracWiki for the wiki side.
All is fully automated in a maven build with Hudson, even the deployment of the webapp with cargo
on distant server.
We have 5 virtual servers on a single machine on Debian (using vserver).
We don't have a single performance test and we don't have any webapp tools to monitor.
What do you recommend to go a step further?
I'm really looking for new ways and/or tools to improve everything.
Hey.
Incorporate Sonar into your builds. You will get lots of informations about your code.
I don't see you mentioning any code coverage tools. While coverage isn't everything, it can help finding the parts of your code which aren't covered by the tests (or perhaps even dead).