Git Product home page Git Product logo

judge-d's People

Contributors

akolod avatar dependabot[bot] avatar devus10 avatar felipe444 avatar garlicsauce avatar krzyzy avatar krzyzy-hltech avatar piotr-andruszkiewicz-wttech avatar renovate-bot avatar renovate[bot] avatar wlodarcp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

judge-d's Issues

posting to /contracts/{provider}/{version}

Is your feature request related to a problem? Please describe.
in most cases contracts will be generated on build-phase of a service. We need a way to gather all those contracts and push with one POST request to /contracts/{provider}/{version} endpoint

Describe the solution you'd like
I'd like to have a script which could be run inside jenkins and which would gather all generated pact.json files and a swagger.json file and POST them all to /contracts/{provider}/{version}

Describe alternatives you've considered
maven/gradle plugin

customizing validation behaviour

Is your feature request related to a problem? Please describe.
JSON schema validation should be customizable.

Describe the solution you'd like
Modifying validation behaviour using system properties passed so that they can be used in docker.

Remove deprecated endpoints

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Generate swagger file from gradle plugin

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Provide sample of generated html report

Describe the solution you'd like
There should be attached generated via python script HTML report. It should be located in some wiki page or on project github.io

Describe alternatives you've considered
No alternatives yet

Additional context

New endpoint for runtime analysis of contract (without storing expectations/capabilities)

Is your feature request related to a problem? Please describe.
Whenever you are making any changes to API you'd like to know if they're backwards compatible.

Describe the solution you'd like
New endpoint that will allow me to perform runtime contract analysis and will not persist my expectations and capabilities. That will allow me to check every change that I make to codebase without worrying that they will brake communication between services.

Describe alternatives you've considered
Alternatives:

  • custom endpoint WILL store my expectations and capabilities in some temporary space for short amount of time, there should be some job clearing that space every 1/5/10/60/some seconds/minutes

Get rid of scrutinizer

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Support for newer Swagger versions with fallback.

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Add archunit for judge-d

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Move repository out of the domain and adjust archunit

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Fix logging

publishing services to Judge-D: [com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@789c391e, com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@44ae812d, com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@714abb4e, com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@e64034c5, com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@125017d8, com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@82d191d9, com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@e446d6cf, com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@8f921f98, com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@448f1584, com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@58f7cd7c, com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@dbceabc2, com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@a29e6113, com.hltech.contracts.judged.agent.JudgeDPublisher$ServiceForm@5585800a, com.hltech.contracts.judged.agent.Ju

Integration with consul

Allow to use consul instead of k8s auto discovery mechanism as source of information about services on environment

For now dredd support only k8s auto discovery mechanism

Consul is popular tool that provide auto discovery and it is platform-independent so possibility to use it instead of k8s built in mechanism makes dredd more flexible

Support for container image addresses using digest and complex paths

if (image.contains(":")) {
String imageName = image.split(":")[0];
String imageVersion = image.split(":")[1];
return Optional.of(new ServiceLocator.Service(
imageName.contains("/") ? imageName.substring(imageName.lastIndexOf("/") + 1) : imageName,
imageVersion
));
} else {
return Optional.<ServiceLocator.Service>empty();
}

Images can, and should be specified using digest, rather than tags. Tags are mutable, so they aren't secure. Digests are immutable, and always point to the same image.

Full container path can look like: domain.org/dir-1/dir-n/name:tag@sha256:deadbeef

Below image names are valid and working:

  • quay.io/cardil/wathola-forwarder:v0.7.0@sha256:5130875b448f6d4a8d1d422e83358c8a56a21466cbd51492e7ff4d5ebddb7d26
  • quay.io/cardil/wathola-forwarder@sha256:5130875b448f6d4a8d1d422e83358c8a56a21466cbd51492e7ff4d5ebddb7d26
  • quay.io/cardil/wathola-forwarder:v0.7.0

Now Judge-d looks only for tagged images. It should properly parse image address.

Validate contracts when they are uploaded

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Logging of errors

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Security for dredd api

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Move spring dependencies out of the domain and adjust archunit

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

/contracts/services/{serviceName} returns no content

Describe the bug
/contracts/services/{serviceName} returns no content

To Reproduce

  1. Rune the application in dev profile
  2. Add contract with POST /localhost:8080/contracts/services/ka/versions/1.0
  3. Go to GET localhost:8080/contracts/services/ka
  4. See error

Expected behavior
String with service name

validation report generator

Is your feature request related to a problem? Please describe.
there will always be a need to generate human-readeable report based on validation report so that it's quick and easy to spot contract incompatibilities

Describe the solution you'd like
I'd like to have a tool e.g. script which will take json (serialized AggregatedValidationReportDto) as an input and produce html report as an output

Describe alternatives you've considered
didnt consider any alternatives

Additional context
I intend to execute this tool e.g. script in jenkins - right after my contracts are generated and validated

SPIKE: Using wiremock to validate contracts in Judge-d - verify possibility

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Labels for Judge-d

Labels containing information such as component type (backend, frontend, external)

Open question - how to handle external services (currently they require additional environment)

validate particular version of a service

Is your feature request related to a problem? Please describe.
would be usefull if there was ability to validate if particular version of a service is compatible with the whole environment

Describe the solution you'd like
I'd see a set of rest endpoints - one per communication protocol - taking as and input name, version and environment

Describe alternatives you've considered
nothing

Persist contract with large capability

Currently, it's impossible to add contract with large capability. When I tried to add contract with swagger docs having about ~1.7M characters, I received following exception:

org.postgresql.util.PSQLException: ERROR: value too long for type character varying(65436) at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2455) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2155) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:288) at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:430) at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:356) at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:168)

Add support for Knative Services

Is your feature request related to a problem? Please describe.
Current implementation of K8s service locator looks for pods, and fetches their image. Image is parsed so that name and version of a service is resolved.

Knative project introduces serverless programming into K8s world. Knative services scale their pods to zero if there is no traffic going into them. In that way Judge-d will not find them as a service.

Describe the solution you'd like
To support Knative services, one should look on service.serving.knative.dev resource type, and took image from it's spec section. Below example Kservice can be seen:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: forwarder
  namespace: demo
spec:
  template:
    spec:
      containers:
        - name: forwarder
          image: quay.io/cardil/wathola-forwarder:v0.7.0
          readinessProbe:
            httpGet:
              path: /healthz

Describe alternatives you've considered
none

Additional context

Upgrade java version in Judge-d

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Add Mime_type to expectations and capabilities so that it is known what is stored in "value" tables in each case

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Please add step-by-step example of posting the contract to the endpoint

Hello,

I am trying to understand how to interact with Judge D. Could you please explain how to feed the REST endpoints with the pact and swagger files described in the README.md? I've run through the tests to see how this would be done, but they are based on very simple (to say the least) data, which doesn't shed much light. I've also tried to use judge-d-ui, but the heroku page gives an error message, and the docker-compose version I put up on my machine gave no response to my browser's request to localhost:8081.

Best regards,
Piotr

Make POST /contracts instead of POST /contracts/{provider}/{version}

We want to make our API more RESTful. Therefore we decided to replace POST /contracts with POST /contracts/{provider}/{version}. Both path parameters should be represented in request body. Moreover 409 error must be returned in case when resource already exists (the same provider and version).

Fix docker compose files

Currently, running application and database via docker-compose is impossible.

  1. Version and service labels must be added
  2. Ports must be mapped correctly
  3. judge_d database must be created

Add jms support using vaunt to judge-dredd

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Enable a service to resign from dredd jurisdiction

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Possibility of validation againts multiple environments

It is required when there are some external services, which are undetectable for dredd-agent. Then we might upload their expectations&capabilities + create custom environment for them (external from regular environments) and then verify contracts.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.