Change CsarHandler behavior 01/41401/1
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Fri, 6 Apr 2018 16:13:17 +0000 (18:13 +0200)
committerDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Fri, 6 Apr 2018 16:13:17 +0000 (18:13 +0200)
Change the Csarhandler so it does not raise an exception when it
installs a file that already exist

Issue-ID: CLAMP-151
Change-Id: I4b260bee95d2651e64bf4318957680918396be4d
Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java
src/test/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandlerTest.java

index 2b83905..6216937 100644 (file)
@@ -27,9 +27,9 @@ import com.att.aft.dme2.internal.apache.commons.io.IOUtils;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -97,9 +97,9 @@ public class CsarHandler {
                     + artifactElement.getArtifactUUID() + ")");
             Path path = Paths.get(csarFilePath);
             Files.createDirectories(path.getParent());
-            Files.createFile(path);
-            try (FileOutputStream outFile = new FileOutputStream(csarFilePath)) {
-                outFile.write(resultArtifact.getArtifactPayload(), 0, resultArtifact.getArtifactPayload().length);
+            // Create or replace the file
+            try (OutputStream out = Files.newOutputStream(path)) {
+                out.write(resultArtifact.getArtifactPayload(), 0, resultArtifact.getArtifactPayload().length);
             }
             sdcCsarHelper = factory.getSdcCsarHelper(csarFilePath);
             this.loadDcaeBlueprint();
index 46bddaf..3a37f94 100644 (file)
@@ -135,4 +135,29 @@ public class CsarHandlerTest {
         Path path = Paths.get(SDC_FOLDER + "/test-controller/" + CSAR_ARTIFACT_NAME);
         Files.deleteIfExists(path);
     }
+
+    @Test
+    public void testDoubleSave()
+            throws SdcArtifactInstallerException, SdcToscaParserException, CsarHandlerException, IOException {
+        CsarHandler csar = new CsarHandler(buildFakeSdcNotification(), "test-controller", "/tmp/csar-handler-tests");
+        // Test the save
+        csar.save(buildFakeSdcResut());
+        assertTrue((new File(SDC_FOLDER + "/test-controller/" + CSAR_ARTIFACT_NAME)).exists());
+        assertEquals(CSAR_ARTIFACT_NAME, csar.getArtifactElement().getArtifactName());
+        assertNotNull(csar.getSdcCsarHelper());
+        // Test dcaeBlueprint
+        String blueprint = csar.getDcaeBlueprint();
+        assertNotNull(blueprint);
+        assertTrue(!blueprint.isEmpty());
+        assertTrue(blueprint.contains("DCAE-VES-PM-EVENT-v1"));
+        // Test additional properties from Sdc notif
+        assertEquals(BLUEPRINT1_NAME, csar.getBlueprintArtifactName());
+        assertEquals(RESOURCE1_UUID, csar.getBlueprintInvariantResourceUuid());
+        assertEquals(SERVICE_UUID, csar.getBlueprintInvariantServiceUuid());
+        Path path = Paths.get(SDC_FOLDER + "/test-controller/" + CSAR_ARTIFACT_NAME);
+        // A double save should simply overwrite the existing
+        csar.save(buildFakeSdcResut());
+        // Do some cleanup
+        Files.deleteIfExists(path);
+    }
 }