aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCooper.Wu <wutuo@chinamobile.com>2020-09-04 15:39:00 +0800
committerCooper.Wu <wutuo@chinamobile.com>2020-09-04 15:39:07 +0800
commit4be0e47c656ce32a2bc93e4ca4205a806744d35f (patch)
tree59dc58d7ec5b840c8d6cf43c64df7b692a081715
parent2dafda95ddf6998a5e1059a6383e623f0f285cd8 (diff)
Scenario active management
Issue-ID: VNFSDK-613 Change-Id: Id2873cc618b198d63a9218f775c6d9cfce3882c0 Signed-off-by: Cooper.Wu <wutuo@chinamobile.com>
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/FileUtil.java54
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vtp/scenario/VTPScenarioResource.java106
2 files changed, 102 insertions, 58 deletions
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/FileUtil.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/FileUtil.java
index 777080f1..4b008395 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/FileUtil.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/FileUtil.java
@@ -17,8 +17,11 @@ package org.onap.vnfsdk.marketplace.common;
import java.io.BufferedOutputStream;
import java.io.File;
+import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
@@ -30,8 +33,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.gson.Gson;
import com.google.gson.stream.JsonReader;
-import java.io.FileWriter;
-import java.io.FileReader;
+
import java.nio.file.Files;
import java.nio.file.Paths;
@@ -73,12 +75,12 @@ public final class FileUtil {
boolean isFileDeleted=false;
try {
if (file.exists()){
- Files.delete(Paths.get(file.getPath()));
- fileAbsPath = file.getAbsolutePath();
- logger.info("delete {} {}" ,hintInfo, fileAbsPath);
+ Files.delete(Paths.get(file.getPath()));
+ fileAbsPath = file.getAbsolutePath();
+ logger.info("delete {} {}" ,hintInfo, fileAbsPath);
}
else{
- logger.info("file not exist. no need delete {} {}" ,hintInfo , fileAbsPath);
+ logger.info("file not exist. no need delete {} {}" ,hintInfo , fileAbsPath);
}
isFileDeleted=true;
@@ -118,7 +120,7 @@ public final class FileUtil {
}
try (InputStream input = zipFile.getInputStream(entry);
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));) {
+ BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));) {
int length = 0;
while ((length = input.read(buffer)) != -1) {
bos.write(buffer, 0, length);
@@ -188,7 +190,7 @@ public final class FileUtil {
public static boolean deleteDirectory(File file) {
if (!file.exists()) {
- return true;
+ return true;
}
if (file.isDirectory()) {
for (File f : file.listFiles()) {
@@ -246,4 +248,40 @@ public final class FileUtil {
return true;
}
+
+ /**
+ * Search file in folder
+ * @param folder
+ * @param keyword
+ * @return
+ */
+ public static List<File> searchFiles(File folder, String keyword) {
+ List<File> result = new ArrayList<File>();
+ if (folder.isFile())
+ result.add(folder);
+
+ File[] subFolders = folder.listFiles(new FileFilter() {
+ @Override
+ public boolean accept(File file) {
+ if (file.isDirectory()) {
+ return true;
+ }
+ if (file.getName().toLowerCase().contains(keyword)) {
+ return true;
+ }
+ return false;
+ }
+ });
+
+ if (subFolders != null) {
+ for (File file : subFolders) {
+ if (file.isFile()) {
+ result.add(file);
+ } else {
+ result.addAll(searchFiles(file, keyword));
+ }
+ }
+ }
+ return result;
+ }
}
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vtp/scenario/VTPScenarioResource.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vtp/scenario/VTPScenarioResource.java
index 2eff61f8..274cacd9 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vtp/scenario/VTPScenarioResource.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vtp/scenario/VTPScenarioResource.java
@@ -16,12 +16,26 @@
package org.onap.vtp.scenario;
-import java.io.*;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
import java.text.MessageFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
import java.util.regex.Matcher;
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@@ -33,6 +47,7 @@ import org.glassfish.jersey.media.multipart.BodyPartEntity;
import org.glassfish.jersey.media.multipart.FormDataBodyPart;
import org.glassfish.jersey.media.multipart.FormDataParam;
import org.onap.vnfsdk.marketplace.common.CommonConstant;
+import org.onap.vnfsdk.marketplace.common.FileUtil;
import org.onap.vnfsdk.marketplace.common.ToolUtil;
import org.onap.vtp.VTPResource;
import org.onap.vtp.error.VTPError;
@@ -70,7 +85,7 @@ public class VTPScenarioResource extends VTPResource{
args.addAll(Arrays.asList(
PRODUCT_ARG, OPEN_CLI, "product-list", FORMAT, "json"
- ));
+ ));
JsonElement results = null;
@@ -84,18 +99,18 @@ public class VTPScenarioResource extends VTPResource{
if (results != null && results.isJsonArray() && results.getAsJsonArray().size()>0) {
JsonArray resultsArray = results.getAsJsonArray();
- for (Iterator<JsonElement> it = resultsArray.iterator(); it.hasNext();) {
- JsonElement jsonElement = it.next();
- JsonObject n = jsonElement.getAsJsonObject();
- if (n.entrySet().iterator().hasNext()) {
- String name = n.get("product").getAsString();
+ for (Iterator<JsonElement> it = resultsArray.iterator(); it.hasNext();) {
+ JsonElement jsonElement = it.next();
+ JsonObject n = jsonElement.getAsJsonObject();
+ if (n.entrySet().iterator().hasNext()) {
+ String name = n.get("product").getAsString();
- if (OPEN_CLI.equalsIgnoreCase(name))
- continue;
+ if (OPEN_CLI.equalsIgnoreCase(name))
+ continue;
- list.getScenarios().add(new VTPTestScenario().setName(name).setDescription(
- n.get(DESCRIPTION).getAsString()));
- }
+ list.getScenarios().add(new VTPTestScenario().setName(name).setDescription(
+ n.get(DESCRIPTION).getAsString()));
+ }
}
}
@@ -119,7 +134,7 @@ public class VTPScenarioResource extends VTPResource{
args.addAll(Arrays.asList(
PRODUCT_ARG, OPEN_CLI, "service-list", PRODUCT_ARG, scenario, FORMAT, "json"
- ));
+ ));
JsonElement results = null;
try {
@@ -132,14 +147,14 @@ public class VTPScenarioResource extends VTPResource{
if (results != null && results.isJsonArray() && results.getAsJsonArray().size()>0) {
JsonArray resultsArray = results.getAsJsonArray();
- for (Iterator<JsonElement> it = resultsArray.iterator(); it.hasNext();) {
- JsonElement jsonElement = it.next();
- JsonObject n = jsonElement.getAsJsonObject();
- if (n.entrySet().iterator().hasNext()) {
- list.getSuites().add(new VTPTestSuite().setName(n.get(SERVICE).getAsString()).setDescription(
- n.get(DESCRIPTION).getAsString()));
- }
+ for (Iterator<JsonElement> it = resultsArray.iterator(); it.hasNext();) {
+ JsonElement jsonElement = it.next();
+ JsonObject n = jsonElement.getAsJsonObject();
+ if (n.entrySet().iterator().hasNext()) {
+ list.getSuites().add(new VTPTestSuite().setName(n.get(SERVICE).getAsString()).setDescription(
+ n.get(DESCRIPTION).getAsString()));
}
+ }
}
return list;
@@ -164,7 +179,7 @@ public class VTPScenarioResource extends VTPResource{
args.addAll(Arrays.asList(
PRODUCT_ARG, OPEN_CLI, "schema-list", PRODUCT_ARG, scenario, FORMAT, "json"
- ));
+ ));
if (testSuiteName != null) {
args.add("--service");
args.add(testSuiteName);
@@ -181,15 +196,15 @@ public class VTPScenarioResource extends VTPResource{
if (results != null && results.isJsonArray() && results.getAsJsonArray().size()>0) {
JsonArray resultsArray = results.getAsJsonArray();
- for (Iterator<JsonElement> it = resultsArray.iterator(); it.hasNext();) {
- JsonElement jsonElement = it.next();
- JsonObject n = jsonElement.getAsJsonObject();
- if (n.entrySet().iterator().hasNext())
- list.getTestCases().add(
- new VTPTestCase().setTestCaseName(
- n.get("command").getAsString()).setTestSuiteName(
- n.get(SERVICE).getAsString()));
- }
+ for (Iterator<JsonElement> it = resultsArray.iterator(); it.hasNext();) {
+ JsonElement jsonElement = it.next();
+ JsonObject n = jsonElement.getAsJsonObject();
+ if (n.entrySet().iterator().hasNext())
+ list.getTestCases().add(
+ new VTPTestCase().setTestCaseName(
+ n.get("command").getAsString()).setTestSuiteName(
+ n.get(SERVICE).getAsString()));
+ }
}
return list;
@@ -204,9 +219,9 @@ public class VTPScenarioResource extends VTPResource{
message = "Failed to perform the operation",
response = VTPError.class) })
public Response listTestcases(
- @ApiParam("Test scenario name") @PathParam("scenario") String scenario,
- @ApiParam("Test suite name") @QueryParam("testSuiteName") String testSuiteName
- ) throws VTPException {
+ @ApiParam("Test scenario name") @PathParam("scenario") String scenario,
+ @ApiParam("Test suite name") @QueryParam("testSuiteName") String testSuiteName
+ ) throws VTPException {
return Response.ok(this.listTestcasesHandler(testSuiteName, scenario).getTestCases().toString(), MediaType.APPLICATION_JSON).build();
}
@@ -215,7 +230,7 @@ public class VTPScenarioResource extends VTPResource{
List<String> args = new ArrayList<>();
args.addAll(Arrays.asList(
PRODUCT_ARG, OPEN_CLI, "schema-show", PRODUCT_ARG, scenario, "--service", testSuiteName, "--command", testCaseName , FORMAT, "json"
- ));
+ ));
JsonElement results = null;
try {
results = this.makeRpcAndGetJson(args);
@@ -282,7 +297,7 @@ public class VTPScenarioResource extends VTPResource{
@ApiParam("Test scenario name") @PathParam("scenario") String scenario,
@ApiParam(value = "Test case name") @PathParam("testSuiteName") String testSuiteName,
@ApiParam(value = "Test case name") @PathParam("testCaseName") String testCaseName)
- throws VTPException {
+ throws VTPException {
return Response.ok(this.getTestcaseHandler(scenario, testSuiteName, testCaseName).toString(), MediaType.APPLICATION_JSON).build();
}
@@ -311,8 +326,8 @@ public class VTPScenarioResource extends VTPResource{
try {
FileUtils.deleteQuietly(yamlFile);
FileUtils.deleteDirectory(scenarioDir);
- FileUtils.copyInputStreamToFile(entity.getInputStream(), yamlFile);
FileUtils.forceMkdir(scenarioDir);
+ FileUtils.copyInputStreamToFile(entity.getInputStream(), yamlFile);
} catch (IOException e) {
LOG.error("Save yaml {} failed", fileName, e);
}
@@ -333,7 +348,7 @@ public class VTPScenarioResource extends VTPResource{
}
for (Object cmd : (List) serviceMap.get("commands")) {
File source = new File(VTP_YAML_STORE, cmd.toString().replaceAll("::", Matcher.quoteReplacement(File.separator)));
- if (!cn.hutool.core.io.FileUtil.isFile(source)) {
+ if (!source.isFile()) {
LOG.error("Source {} is not a yaml file !!!", source.getName());
continue;
}
@@ -370,16 +385,7 @@ public class VTPScenarioResource extends VTPResource{
public Response deleteScenario(@ApiParam("Test scenario yaml") @PathParam("scenarioName") String scenarioName) throws VTPException {
String scenario = scenarioName.substring(0, scenarioName.indexOf("-registry"));
File scenarioDir = new File(VTP_YAML_STORE, scenario);
- List<File> yamls = cn.hutool.core.io.FileUtil.loopFiles(scenarioDir, new FileFilter() {
- @Override
- public boolean accept(File pathname) {
- final String path = pathname.getPath();
- if (null != path && path.endsWith(CommonConstant.YAML_SUFFIX)) {
- return true;
- }
- return false;
- }
- });
+ List<File> yamls = FileUtil.searchFiles(scenarioDir, CommonConstant.YAML_SUFFIX);
if (!CollectionUtils.isEmpty(yamls)) {
LOG.error("The scenario yaml {} has sub testcase yamls, delete failed", scenarioName);
throw new VTPException(
@@ -435,4 +441,4 @@ public class VTPScenarioResource extends VTPResource{
});
return Response.ok("Save success", MediaType.APPLICATION_JSON).build();
}
-}
+} \ No newline at end of file