Add name generator for PAP and PDPs 24/122224/1
authorJim Hahn <jrh3@att.com>
Fri, 25 Jun 2021 21:29:21 +0000 (17:29 -0400)
committerJim Hahn <jrh3@att.com>
Fri, 25 Jun 2021 21:30:39 +0000 (17:30 -0400)
Added a method that PAPs and PDPs can use to generate a unique name or
identifier to be used in PAP-PDP messages.

Issue-ID: POLICY-3410
Change-Id: I22b075b123f79ba05e0884f743296c4bc64842b9
Signed-off-by: Jim Hahn <jrh3@att.com>
utils/src/main/java/org/onap/policy/common/utils/network/NetworkUtil.java
utils/src/test/java/org/onap/policy/common/utils/network/NetworkUtilTest.java

index e3539fb..6698d7c 100644 (file)
@@ -26,6 +26,7 @@ import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.UnknownHostException;
+import java.util.UUID;
 import javax.net.ssl.TrustManager;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
@@ -170,4 +171,15 @@ public final class NetworkUtil {
 
         return "127.0.0.1";
     }
+
+    /**
+     * Generates a globally unique name, typically for use in PDP messages, to uniquely
+     * identify a PDP (or PAP), regardless on what cluster it resides.
+     *
+     * @param prefix text to be prepended to the generated value
+     * @return a globally unique name
+     */
+    public static String genUniqueName(String prefix) {
+        return prefix + "-" + UUID.randomUUID();
+    }
 }
index 4ae7284..4019ca7 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * policy-utils
  * ================================================================================
- * Copyright (C) 2018-2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2018-2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +20,7 @@
 
 package org.onap.policy.common.utils.network;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
@@ -91,6 +92,15 @@ public class NetworkUtilTest {
         }
     }
 
+    @Test
+    public void testGenUniqueName() {
+        String name = NetworkUtil.genUniqueName(LOCALHOST);
+        assertThat(name).isNotBlank().isNotEqualTo(LOCALHOST);
+
+        // second call should generate a different value
+        assertThat(NetworkUtil.genUniqueName(LOCALHOST)).isNotEqualTo(name);
+    }
+
     /**
      * Thread that accepts a connection on a socket.
      */