Skip to content

Commit ff11483

Browse files
committed
CB-17306 Add consumption-api checks to CI swagger-compatibility-test
1 parent 5675c80 commit ff11483

File tree

6 files changed

+73
-6
lines changed

6 files changed

+73
-6
lines changed

cloud-consumption/src/main/java/com/sequenceiq/consumption/ConsumptionApplication.java

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
77
import org.springframework.scheduling.annotation.EnableScheduling;
88

9+
import springfox.documentation.swagger2.annotations.EnableSwagger2;
10+
11+
@EnableSwagger2
912
@EnableScheduling
1013
@EnableJpaRepositories(basePackages = "com.sequenceiq")
1114
@SpringBootApplication(scanBasePackages = "com.sequenceiq", exclude = WebMvcMetricsAutoConfiguration.class)

cloud-consumption/src/main/java/com/sequenceiq/consumption/configuration/api/EndpointConfig.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.List;
44

5+
import javax.annotation.PostConstruct;
56
import javax.ws.rs.ApplicationPath;
67
import javax.ws.rs.ext.ExceptionMapper;
78

@@ -39,12 +40,12 @@ public class EndpointConfig extends ResourceConfig {
3940

4041
private final String applicationVersion;
4142

42-
private final Boolean auditEnabled;
43+
private final boolean auditEnabled;
4344

4445
private final List<ExceptionMapper<?>> exceptionMappers;
4546

4647
public EndpointConfig(@Value("${info.app.version:unspecified}") String applicationVersion,
47-
@Value("${consumption.structuredevent.rest.enabled}") Boolean auditEnabled,
48+
@Value("${consumption.structuredevent.rest.enabled:true}") boolean auditEnabled,
4849
List<ExceptionMapper<?>> exceptionMappers,
4950
ServerTracingDynamicFeature serverTracingDynamicFeature,
5051
ClientTracingFeature clientTracingFeature) {
@@ -59,6 +60,7 @@ public EndpointConfig(@Value("${info.app.version:unspecified}") String applicati
5960
register(clientTracingFeature);
6061
}
6162

63+
@PostConstruct
6264
private void registerSwagger() {
6365
BeanConfig swaggerConfig = new BeanConfig();
6466
swaggerConfig.setTitle("Consumption API");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.sequenceiq.consumption.swagger;
2+
3+
import java.nio.file.Files;
4+
import java.nio.file.Path;
5+
import java.nio.file.Paths;
6+
import java.util.HashSet;
7+
import java.util.Set;
8+
9+
import javax.ws.rs.ext.ExceptionMapper;
10+
11+
import org.junit.jupiter.api.Test;
12+
import org.junit.jupiter.api.extension.ExtendWith;
13+
import org.springframework.beans.factory.annotation.Autowired;
14+
import org.springframework.boot.test.mock.mockito.MockBean;
15+
import org.springframework.test.context.ContextConfiguration;
16+
import org.springframework.test.context.TestPropertySource;
17+
import org.springframework.test.context.junit.jupiter.SpringExtension;
18+
19+
import com.sequenceiq.consumption.api.v1.ConsumptionApi;
20+
import com.sequenceiq.consumption.configuration.api.EndpointConfig;
21+
22+
import io.opentracing.contrib.jaxrs2.client.ClientTracingFeature;
23+
import io.opentracing.contrib.jaxrs2.server.ServerTracingDynamicFeature;
24+
import io.swagger.jaxrs.Reader;
25+
import io.swagger.jaxrs.config.SwaggerConfigLocator;
26+
import io.swagger.jaxrs.config.SwaggerContextService;
27+
import io.swagger.models.Swagger;
28+
import io.swagger.util.Json;
29+
30+
@ExtendWith(SpringExtension.class)
31+
@ContextConfiguration(classes = {EndpointConfig.class})
32+
@TestPropertySource(locations = "file:./build/resources/main/application.yml",
33+
properties = {"cb.structuredevent.rest.enabled=false"})
34+
public class SwaggerGenerator {
35+
36+
@MockBean
37+
private ExceptionMapper<?> exceptionMapper;
38+
39+
@MockBean
40+
private ServerTracingDynamicFeature serverTracingDynamicFeature;
41+
42+
@MockBean
43+
private ClientTracingFeature clientTracingFeature;
44+
45+
@Autowired
46+
private EndpointConfig endpointConfig;
47+
48+
@Test
49+
public void generateSwaggerJson() throws Exception {
50+
Set<Class<?>> classes = new HashSet<>(endpointConfig.getClasses());
51+
classes.add(ConsumptionApi.class);
52+
Swagger swagger = new Reader(SwaggerConfigLocator.getInstance().getConfig(SwaggerContextService.CONFIG_ID_DEFAULT).configure(new Swagger()))
53+
.read(classes);
54+
Path path = Paths.get("./build/swagger/consumption.json");
55+
Files.createDirectories(path.getParent());
56+
Files.writeString(path, Json.pretty(swagger));
57+
}
58+
59+
}

integration-test/scripts/build-swagger.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ echo -e "\n\033[1;96m--- building swagger definitions for services\033[0m\n"
1111
freeipa:test --tests=com.sequenceiq.*.swagger.SwaggerGenerator \
1212
redbeams:test --tests=com.sequenceiq.*.swagger.SwaggerGenerator \
1313
autoscale:test --tests=com.sequenceiq.*.swagger.SwaggerGenerator \
14-
datalake:test --tests=com.sequenceiq.*.swagger.SwaggerGenerator
14+
datalake:test --tests=com.sequenceiq.*.swagger.SwaggerGenerator \
15+
cloud-consumption:test --tests=com.sequenceiq.*.swagger.SwaggerGenerator \

integration-test/scripts/swagger-check.sh

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ cp ../freeipa/build/swagger/freeipa.json ./apidefinitions/freeipa.json
1616
cp ../redbeams/build/swagger/redbeams.json ./apidefinitions/redbeams.json
1717
cp ../datalake/build/swagger/datalake.json ./apidefinitions/datalake.json
1818
cp ../autoscale/build/swagger/autoscale.json ./apidefinitions/autoscale.json
19-
19+
cp ../cloud-consumption/build/swagger/consumption.json ./apidefinitions/consumption.json
2020

2121
verlte() {
2222
[ "$1" = "`echo -e "$1\n$2" | sort -V | head -n1`" ]
@@ -79,8 +79,8 @@ echo where major version number is: $MAJOR_VERSION, minor: $MINOR_VERSION, patch
7979
PREVIOUS_MINOR_VERSION=$MAJOR_VERSION.$(expr $MINOR_VERSION - 1).$PATCH_VERSION
8080
PREVIOUS_MINOR_BUILD=$(curl "http://release.infra.cloudera.com/hwre-api/listbuilds?stack=CB&release=${PREVIOUS_MINOR_VERSION}" | jq -r '.latest_build_version')
8181
PREVIOUS_BUILD=$(curl "http://release.infra.cloudera.com/hwre-api/listbuilds?stack=CB&release=$VERSION" | jq '.full_list_versions[0]' | tr -d '"')
82-
Services="cloudbreak,freeipa,environment,datalake,redbeams"
83-
declare -A zone=( ["cloudbreak"]="eu-central-1" ["environment"]="us-east-2" ["datalake"]="us-east-2" ["redbeams"]="us-east-2" ["freeipa"]="us-east-2")
82+
Services="cloudbreak,freeipa,environment,datalake,redbeams,consumption"
83+
declare -A zone=( ["cloudbreak"]="eu-central-1" ["environment"]="us-east-2" ["datalake"]="us-east-2" ["redbeams"]="us-east-2" ["freeipa"]="us-east-2" ["consumption"]="eu-central-1")
8484
Field_Separator=$IFS
8585
IFS=,
8686
set +e

scripts/build-dev.sh

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ if [[ "${RUN_SONARQUBE}" == "true" ]]; then
1111
./gradlew -Penv=jenkins -Phttp.socketTimeout=300000 -Phttp.connectionTimeout=300000 -b build.gradle datalake:sonarqube datalake:jacocoTestReport -Dorg.gradle.internal.http.socketTimeout=600000 -Dorg.gradle.internal.http.connectionTimeout=600000 -x test || true
1212
./gradlew -Penv=jenkins -Phttp.socketTimeout=300000 -Phttp.connectionTimeout=300000 -b build.gradle environment:sonarqube environment:jacocoTestReport -Dorg.gradle.internal.http.socketTimeout=600000 -Dorg.gradle.internal.http.connectionTimeout=600000 -x test || true
1313
./gradlew -Penv=jenkins -Phttp.socketTimeout=300000 -Phttp.connectionTimeout=300000 -b build.gradle redbeams:sonarqube redbeams:jacocoTestReport -Dorg.gradle.internal.http.socketTimeout=600000 -Dorg.gradle.internal.http.connectionTimeout=600000 -x test || true
14+
./gradlew -Penv=jenkins -Phttp.socketTimeout=300000 -Phttp.connectionTimeout=300000 -b build.gradle cloud-consumption:sonarqube cloud-consumption:jacocoTestReport -Dorg.gradle.internal.http.socketTimeout=600000 -Dorg.gradle.internal.http.connectionTimeout=600000 -x test || true
1415
fi
1516

1617
aws s3 cp ./core/build/swagger/cb.json "s3://cloudbreak-swagger/swagger-${VERSION}.json" --acl public-read
@@ -19,3 +20,4 @@ aws s3 cp ./freeipa/build/swagger/freeipa.json "s3://freeipa-swagger/swagger-${V
1920
aws s3 cp ./redbeams/build/swagger/redbeams.json "s3://redbeams-swagger/swagger-${VERSION}.json" --acl public-read
2021
aws s3 cp ./datalake/build/swagger/datalake.json "s3://datalake-swagger/swagger-${VERSION}.json" --acl public-read
2122
aws s3 cp ./autoscale/build/swagger/autoscale.json "s3://autoscale-swagger/swagger-${VERSION}.json" --acl public-read
23+
aws s3 cp ./cloud-consumption/build/swagger/consumption.json "s3://consumption-swagger/swagger-${VERSION}.json" --acl public-read

0 commit comments

Comments
 (0)