This is an automated email from the ASF dual-hosted git repository. mradhakrishnan pushed a commit to branch AMBARI-24711 in repository https://gitbox.apache.org/repos/asf/ambari.git
commit 32023fb66ab0e0b163bf4c4d4937e0d846d3b2ca Author: Madhuvanthi Radhakrishnan <mradhakrish...@hortonworks.com> AuthorDate: Wed Aug 23 15:04:52 2017 -0700 AMBARI-21796 : Clear versionDefinition map during new mpack registration and mpack deletion (mradhakrishnan) --- .../ambari/server/api/services/AmbariMetaInfo.java | 6 +- .../org/apache/ambari/server/state/MpackTest.java | 96 ++++++++++++++++++++++ 2 files changed, 100 insertions(+), 2 deletions(-) diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java index 1ea5369..6812bf2 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java @@ -665,6 +665,7 @@ public class AmbariMetaInfo { * @throws ResourceAlreadyExistsException */ public MpackResponse registerMpack(MpackRequest mpackRequest) throws IOException, ResourceAlreadyExistsException { + versionDefinitions.clear(); return mpackManager.registerMpack(mpackRequest); } @@ -1453,7 +1454,8 @@ public class AmbariMetaInfo { */ private synchronized void ensureVersionDefinitions() { if (null != versionDefinitions) { - return; + if(versionDefinitions.size() > 0) + return; } versionDefinitions = new HashMap<>(); @@ -1552,7 +1554,7 @@ public class AmbariMetaInfo { * @throws IOException */ public void removeMpack(MpackEntity mpackEntity, StackEntity stackEntity) throws IOException { - + versionDefinitions.clear(); boolean stackDelete = mpackManager.removeMpack(mpackEntity, stackEntity); if(stackDelete) { diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/MpackTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/MpackTest.java new file mode 100644 index 0000000..388c256 --- /dev/null +++ b/ambari-server/src/test/java/org/apache/ambari/server/state/MpackTest.java @@ -0,0 +1,96 @@ +/** + * 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. + */ +package org.apache.ambari.server.state; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.junit.Assert; +import org.junit.Test; + +import com.google.gson.Gson; + +public class MpackTest { + @Test + public void testMpacks() { + Mpacks mpack = new Mpacks(); + mpack.setName("name"); + mpack.setMpackId((long)100); + mpack.setDescription("desc"); + mpack.setVersion("3.0"); + mpack.setMpacksUri("abc.tar.gz"); + mpack.setRegistryId(new Long(100)); + + Assert.assertEquals("name", mpack.getName()); + Assert.assertEquals(new Long(100), mpack.getMpackId()); + Assert.assertEquals("desc", mpack.getDescription()); + Assert.assertEquals("abc.tar.gz", mpack.getMpacksUri()); + Assert.assertEquals(new Long(100), mpack.getRegistryId()); + + } + + @Test + public void testMpacksUsingGson() { + String mpackJsonContents = "{\n" + + " \"name\" : \"hdf-ambari-mpack\",\n" + + " \"version\": \"3.0.0.0-111\",\n" + + " \"description\" : \"HDF 3.0.0 Ambari Management Pack\",\n" + + " \"prerequisites\": {\n" + + " \"min-ambari-version\" : \"3.0.0.0\"\n" + + " },\n" + + " \"packlets\": [\n" + + " {\n" + + " \"type\" : \"service-packlet\",\n" + + " \"name\" : \"NIFI\",\n" + + " \"version\" : \"1.2.0.0-123\",\n" + + " \"source_location\": \"packlets/NIFI-1.2.0.0-123.tar.gz\"\n" + + " },\n" + + " {\n" + + " \"type\" : \"service-packlet\",\n" + + " \"name\" : \"STREAMLINE\",\n" + + " \"version\" : \"1.0.0.0-100\",\n" + + " \"source_location\": \"packlets/STREAMLINE-1.0.0.0-100.tar.gz\"\n" + + " }\n" + + " ]\n" + + "}\n"; + HashMap<String, String> expectedPrereq = new HashMap<>(); + expectedPrereq.put("min-ambari-version","3.0.0.0"); + ArrayList<Packlet> expectedPacklets = new ArrayList<>(); + Packlet nifi = new Packlet(); + nifi.setType("SERVICE_PACKLET"); + nifi.setVersion("1.2.0.0-123"); + nifi.setSourceLocation("packlets/NIFI-1.2.0.0-123.tar.gz"); + nifi.setName("NIFI"); + Packlet streamline = new Packlet(); + streamline.setName("STREAMLINE"); + streamline.setType(Packlet.PackletType.SERVICE_PACKLET); + streamline.setSourceLocation("packlets/STREAMLINE-1.0.0.0-100.tar.gz"); + streamline.setVersion("1.0.0.0-100"); + expectedPacklets.add(nifi); + expectedPacklets.add(streamline); + + Gson gson = new Gson(); + Mpack mpack = gson.fromJson(mpackJsonContents, Mpack.class); + Assert.assertEquals("hdf-ambari-mpack", mpack.getName()); + Assert.assertEquals("3.0.0.0-111", mpack.getVersion()); + Assert.assertEquals("HDF 3.0.0 Ambari Management Pack", mpack.getDescription()); + Assert.assertEquals(expectedPrereq, mpack.getPrerequisites()); + Assert.assertEquals(expectedPacklets.toString(), mpack.getPacklets().toString()); + } + +}