You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ch...@apache.org on 2019/12/23 06:00:13 UTC
[servicecomb-toolkit] 04/04: [SCB-1663] test cli.sh in travis ci
and fix some bug
This is an automated email from the ASF dual-hosted git repository.
chanjarster pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git
commit 84f0c9d69766ec65a9c177dd4fff8d3df95cdc13
Author: kakulisen <18...@163.com>
AuthorDate: Mon Dec 16 11:06:24 2019 +0800
[SCB-1663] test cli.sh in travis ci and fix some bug
Signed-off-by: kakulisen <18...@163.com>
---
.travis.yml | 2 +
.../servicecomb/toolkit/cli/DocGenerate.java | 22 ++--
.../servicecomb/toolkit/cli/ToolkitMain.java | 2 +-
.../docgen/ContractsSwaggerUIGenerator.java | 2 +-
scripts/cliTest.sh | 119 +++++++++++++++++++++
5 files changed, 138 insertions(+), 9 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 513de34..3e27791 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -38,5 +38,7 @@ jobs:
include:
- stage: Test
script: ./scripts/test.sh
+ - stage: Cli Test
+ script: ./scripts/cliTest.sh
- stage: Deploy on
script: if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then bash ./scripts/deploy.sh; fi
diff --git a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/DocGenerate.java b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/DocGenerate.java
index 7426846..cb39268 100755
--- a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/DocGenerate.java
+++ b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/DocGenerate.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.toolkit.cli;
import java.io.File;
import java.io.IOException;
-import java.net.URI;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -29,14 +28,16 @@ import java.nio.file.attribute.BasicFileAttributes;
import java.util.HashMap;
import java.util.Map;
-import org.apache.servicecomb.swagger.SwaggerUtils;
-import org.apache.servicecomb.toolkit.GeneratorFactory;
import org.apache.servicecomb.toolkit.DocGenerator;
+import org.apache.servicecomb.toolkit.GeneratorFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.airlift.airline.Command;
import io.airlift.airline.Option;
+import io.swagger.parser.OpenAPIParser;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.parser.core.models.SwaggerParseResult;
@Command(name = "docgenerate", description = "Generate document by OpenAPI specification file")
public class DocGenerate implements Runnable {
@@ -50,7 +51,7 @@ public class DocGenerate implements Runnable {
@Option(name = {"-f", "--format"}, title = "document format", required = false,
description = "format of document, as swagger-ui or asciidoc-html (swagger-ui by default)")
- private String format = "html";
+ private String format = "swagger-ui";
@Option(name = {"-o", "--output"}, title = "output directory",
description = "location of the generated document (current dir by default)")
@@ -73,7 +74,7 @@ public class DocGenerate implements Runnable {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
- docGeneratorConfig.put("contractContent", SwaggerUtils.parseSwagger(file.toUri().toURL()));
+ docGeneratorConfig.put("contractContent", parseOpenApi(specPath));
docGeneratorConfig.put("outputPath",
output + File.separator + file.toFile().getName().substring(0, file.toFile().getName().indexOf(".")));
docGenerator.configure(docGeneratorConfig);
@@ -85,7 +86,7 @@ public class DocGenerate implements Runnable {
} else if (Files.isRegularFile(specPath)) {
fileName[0] = specPath.toFile().getName();
- docGeneratorConfig.put("contractContent", SwaggerUtils.parseSwagger(specPath.toUri().toURL()));
+ docGeneratorConfig.put("contractContent", parseOpenApi(specPath));
docGeneratorConfig.put("outputPath", output + File.separator + new File(specFile).getName()
.substring(0, new File(specFile).getName().indexOf(".")));
docGenerator.configure(docGeneratorConfig);
@@ -93,7 +94,7 @@ public class DocGenerate implements Runnable {
} else {
fileName[0] = specFile;
- docGeneratorConfig.put("contractContent", SwaggerUtils.parseSwagger(URI.create(specFile).toURL()));
+ docGeneratorConfig.put("contractContent", parseOpenApi(specPath));
docGeneratorConfig.put("outputPath", output + File.separator + new File(specFile).getName()
.substring(0, new File(specFile).getName().indexOf(".")));
docGenerator.configure(docGeneratorConfig);
@@ -105,4 +106,11 @@ public class DocGenerate implements Runnable {
LOGGER.error(e.getMessage());
}
}
+
+ public OpenAPI parseOpenApi(Path file) {
+ SwaggerParseResult swaggerParseResult = new OpenAPIParser()
+ .readLocation(file.toString(), null, null);
+ OpenAPI openAPI = swaggerParseResult.getOpenAPI();
+ return openAPI;
+ }
}
diff --git a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/ToolkitMain.java b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/ToolkitMain.java
index 851289d..ff07822 100755
--- a/cli/src/main/java/org/apache/servicecomb/toolkit/cli/ToolkitMain.java
+++ b/cli/src/main/java/org/apache/servicecomb/toolkit/cli/ToolkitMain.java
@@ -40,7 +40,7 @@ public class ToolkitMain {
if (StringUtils.isNotEmpty(scriptName)) {
builder = Cli.builder(scriptName);
} else {
- builder = Cli.builder("java -jar toolkit-cli-" + projectVersion + ".jar");
+ builder = Cli.builder("java -jar cli-" + projectVersion + ".jar");
}
builder.withDescription("Microservice development toolkit(version " + projectVersion
diff --git a/docgen/src/main/java/org/apache/servicecomb/toolkit/docgen/ContractsSwaggerUIGenerator.java b/docgen/src/main/java/org/apache/servicecomb/toolkit/docgen/ContractsSwaggerUIGenerator.java
index 1bf2e7a..5b88386 100755
--- a/docgen/src/main/java/org/apache/servicecomb/toolkit/docgen/ContractsSwaggerUIGenerator.java
+++ b/docgen/src/main/java/org/apache/servicecomb/toolkit/docgen/ContractsSwaggerUIGenerator.java
@@ -50,7 +50,7 @@ public class ContractsSwaggerUIGenerator implements DocGenerator {
@Override
public boolean canProcess(String type) {
- return "default".equals(type);
+ return "default".equals(type) || "swagger-ui".equals(type);
}
@Override
diff --git a/scripts/cliTest.sh b/scripts/cliTest.sh
new file mode 100755
index 0000000..c20cef6
--- /dev/null
+++ b/scripts/cliTest.sh
@@ -0,0 +1,119 @@
+#!/usr/bin/env bash
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+#bin/sh
+
+projectDir=$(pwd)
+
+# get an binary package
+mvn clean install -DskipTests -Prelease -Dgpg.skip=true
+cd toolkit-distribution/target/
+unzip apache-servicecomb-toolkit-distribution-*-bin.zip
+cd apache-servicecomb-toolkit-distribution-*-bin
+
+function checkFail
+{
+ if [ $? -ne 0 ]; then
+ echo "run $1 failed"
+ exit 1
+ fi
+}
+
+function helpTest
+{
+ # help
+ ./cli.sh help
+
+ checkFail helpTest
+ echo "./cli.sh help test success"
+}
+
+function codegenerateTest
+{
+ # codegenerate
+
+ for programingModel in "SpringMVC" "POJO" "JAX-RS" "SpringBoot"
+ do
+ ./cli.sh codegenerate \
+ -m ServiceComb \
+ -i ${projectDir}/cli/src/test/resources/swagger.yaml \
+ -o ${projectDir}/target \
+ -p ${programingModel} 2>&1 \
+ | grep "Success to generate code"
+
+ checkFail codegenerateTest
+ echo "generate ${programingModel} is ok"
+ done
+
+ echo "./cli.sh codegenerate test success"
+}
+
+function docgenerateTest
+{
+ # docgenerate
+ ./cli.sh docgenerate \
+ -i ${projectDir}/cli/src/test/resources/swagger.yaml \
+ -o ${projectDir}/target 2>&1
+
+ checkFail docgenerateTest
+ echo "./cli.sh docgenerate test success"
+}
+
+function checkstyleTest
+{
+ # checkstyle
+ ./cli.sh checkstyle \
+ -r ${projectDir}/cli/src/test/resources/oas/style-rules.properties \
+ -f ${projectDir}/cli/src/test/resources/oas/style.yaml 2>&1 \
+ | grep "check not passed"
+
+ checkFail checkstyleTest
+
+ ./cli.sh cs \
+ -r ${projectDir}/cli/src/test/resources/oas/style-rules.properties \
+ -f ${projectDir}/cli/src/test/resources/oas/style.yaml 2>&1 \
+ | grep "check not passed"
+
+ checkFail checkstyleTest
+
+ echo "./cli.sh checkstyle test success"
+}
+
+function checkcompatibilityTest
+{
+ # checkcompatibility
+ ./cli.sh checkcompatibility \
+ ${projectDir}/cli/src/test/resources/oas/compatibility-left.yaml \
+ ${projectDir}/cli/src/test/resources/oas/compatibility-right.yaml 2>&1 \
+ | grep "adding is not allowed on right side"
+
+ checkFail checkcompatibilityTest
+
+ ./cli.sh cc \
+ ${projectDir}/cli/src/test/resources/oas/compatibility-left.yaml \
+ ${projectDir}/cli/src/test/resources/oas/compatibility-right.yaml 2>&1 \
+ | grep "adding is not allowed on right side"
+
+ checkFail checkcompatibilityTest
+ echo "./cli.sh checkcompatibility test success"
+}
+
+helpTest
+codegenerateTest
+docgenerateTest
+checkstyleTest
+checkcompatibilityTest