Add test for transaction rollback in HttpEntry 25/138625/1
authorFiete Ostkamp <Fiete.Ostkamp@telekom.de>
Mon, 5 Aug 2024 07:08:41 +0000 (09:08 +0200)
committerFiete Ostkamp <Fiete.Ostkamp@telekom.de>
Mon, 5 Aug 2024 07:11:43 +0000 (09:11 +0200)
- verify that transaction is rolled back when writing a request in a batch fails
- remove all unused imports

Issue-ID: AAI-3942
Signed-off-by: Fiete Ostkamp <Fiete.Ostkamp@telekom.de>
Change-Id: I93cd1efa08db533a088e242694f07ff10db36b4e

33 files changed:
aai-core/src/main/java/org/onap/aai/config/IntrospectionConfig.java
aai-core/src/main/java/org/onap/aai/config/SchemaConfiguration.java
aai-core/src/main/java/org/onap/aai/dbmap/AAIGraph.java
aai-core/src/main/java/org/onap/aai/dbmap/InMemoryGraph.java
aai-core/src/main/java/org/onap/aai/introspection/MoxyLoader.java
aai-core/src/main/java/org/onap/aai/kafka/AAIKafkaEventJMSProducer.java
aai-core/src/main/java/org/onap/aai/parsers/relationship/RelationshipToURI.java
aai-core/src/main/java/org/onap/aai/query/builder/GremlinUnique.java
aai-core/src/main/java/org/onap/aai/serialization/db/EdgeSerializer.java
aai-core/src/main/java/org/onap/aai/util/delta/DeltaEvents.java
aai-core/src/test/java/org/onap/aai/db/DbMethHelperTest.java
aai-core/src/test/java/org/onap/aai/domain/model/AAIResourceTest.java
aai-core/src/test/java/org/onap/aai/introspection/tools/CreateUUIDTest.java
aai-core/src/test/java/org/onap/aai/introspection/tools/DefaultFieldsTest.java
aai-core/src/test/java/org/onap/aai/introspection/tools/InjectKeysFromURITest.java
aai-core/src/test/java/org/onap/aai/introspection/tools/RemoveNonVisiblePropertyTest.java
aai-core/src/test/java/org/onap/aai/introspection/validation/IntrospectorValidationTest.java
aai-core/src/test/java/org/onap/aai/kafka/AAIKafkaEventIntegrationTest.java
aai-core/src/test/java/org/onap/aai/kafka/KafkaTestConfiguration.java
aai-core/src/test/java/org/onap/aai/parsers/query/RelationshipGremlinQueryTest.java
aai-core/src/test/java/org/onap/aai/parsers/query/RelationshipQueryTest.java
aai-core/src/test/java/org/onap/aai/parsers/query/UniqueRelationshipQueryTest.java
aai-core/src/test/java/org/onap/aai/parsers/uri/URIParserTest.java
aai-core/src/test/java/org/onap/aai/parsers/uri/URIToDBKeyTest.java
aai-core/src/test/java/org/onap/aai/parsers/uri/URIToObjectTest.java
aai-core/src/test/java/org/onap/aai/parsers/uri/URIToRelationshipObjectTest.java
aai-core/src/test/java/org/onap/aai/rest/RestHandlerTest.java
aai-core/src/test/java/org/onap/aai/rest/db/HttpEntryTest.java
aai-core/src/test/java/org/onap/aai/rest/db/HttpEntryTransactionTest.java [new file with mode: 0644]
aai-core/src/test/java/org/onap/aai/rest/notification/NotificationServiceTest.java
aai-core/src/test/java/org/onap/aai/serialization/db/EdgeRulesTest.java
aai-core/src/test/java/org/onap/aai/serialization/engines/query/GraphTraversalQueryEngine_needsFakeEdgeRulesTest.java
aai-core/src/test/java/org/onap/aai/serialization/queryformats/FormatTest.java

index a9fcb88..a341107 100644 (file)
 
 package org.onap.aai.config;
 
-import java.util.*;
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import org.onap.aai.introspection.LoaderFactory;
 import org.onap.aai.introspection.MoxyLoader;
 import org.onap.aai.setup.SchemaVersion;
 import org.onap.aai.setup.SchemaVersions;
index 9247bc7..7547f4f 100644 (file)
@@ -25,10 +25,7 @@ package org.onap.aai.config;
 import org.onap.aai.edges.EdgeIngestor;
 import org.onap.aai.nodes.NodeIngestor;
 import org.onap.aai.serialization.db.EdgeSerializer;
-import org.onap.aai.setup.AAIConfigTranslator;
 import org.onap.aai.setup.ConfigTranslator;
-import org.onap.aai.setup.SchemaConfigVersions;
-import org.onap.aai.setup.SchemaLocationsBean;
 import org.onap.aai.validation.CheckEverythingStrategy;
 import org.onap.aai.validation.SchemaErrorStrategy;
 import org.onap.aai.validation.nodes.DefaultDuplicateNodeDefinitionValidationModule;
@@ -36,7 +33,10 @@ import org.onap.aai.validation.nodes.DuplicateNodeDefinitionValidationModule;
 import org.onap.aai.validation.nodes.NodeValidator;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.*;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.springframework.context.annotation.PropertySource;
 
 @Import({NodesConfiguration.class, EdgesConfiguration.class})
 @Configuration
index 73bbf7c..0db6786 100644 (file)
@@ -25,7 +25,6 @@ package org.onap.aai.dbmap;
 import java.io.FileNotFoundException;
 import java.util.Properties;
 
-import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.commons.configuration2.Configuration;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.tinkerpop.gremlin.structure.Graph;
index cca11c6..6e4ce14 100644 (file)
@@ -29,7 +29,6 @@ import org.apache.tinkerpop.gremlin.structure.io.IoCore;
 import org.janusgraph.core.JanusGraph;
 import org.janusgraph.core.JanusGraphFactory;
 import org.janusgraph.core.JanusGraphTransaction;
-import org.janusgraph.core.schema.JanusGraphManagement;
 import org.onap.aai.dbgen.GraphSONPartialIO;
 import org.onap.aai.dbgen.SchemaGenerator;
 import org.onap.aai.logging.LogFormatTools;
index 6099e1b..ec3151b 100644 (file)
@@ -23,7 +23,7 @@ package org.onap.aai.introspection;
 import com.google.common.base.CaseFormat;
 import com.google.common.collect.ImmutableMap;
 
-import java.io.*;
+import java.io.StringReader;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
index a46f2e9..4e94877 100644 (file)
@@ -23,7 +23,6 @@
 package org.onap.aai.kafka;
 
 import org.json.JSONObject;
-import org.onap.aai.util.AAIConfig;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.jms.core.JmsTemplate;
 import org.springframework.stereotype.Service;
index 8ed0fcb..95b1517 100644 (file)
@@ -40,7 +40,10 @@ import org.onap.aai.edges.enums.EdgeType;
 import org.onap.aai.edges.exceptions.AmbiguousRuleChoiceException;
 import org.onap.aai.edges.exceptions.EdgeRuleNotFoundException;
 import org.onap.aai.exceptions.AAIException;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.IntrospectorFactory;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
 import org.onap.aai.parsers.exceptions.AAIIdentityMapParseException;
 import org.onap.aai.parsers.exceptions.AmbiguousMapAAIException;
index 5849520..2b117c4 100644 (file)
@@ -35,7 +35,6 @@ import org.onap.aai.introspection.Loader;
 import org.onap.aai.parsers.query.QueryParser;
 import org.onap.aai.parsers.query.TraversalStrategy;
 import org.onap.aai.parsers.query.UniqueStrategy;
-import org.onap.aai.query.entities.PaginationResult;
 
 /**
  * The Class GremlinUnique.
index 0c58717..0d491c9 100644 (file)
@@ -20,9 +20,6 @@
 
 package org.onap.aai.serialization.db;
 
-import java.util.EnumMap;
-import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.UUID;
 
index b2821b0..39a0377 100644 (file)
@@ -29,8 +29,6 @@ import java.util.Map;
 import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.kafka.MessageProducer;
 import org.onap.aai.util.AAIConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import com.google.gson.FieldNamingPolicy;
index c79b914..7bea305 100644 (file)
@@ -36,7 +36,6 @@ import org.apache.commons.io.IOUtils;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.janusgraph.core.JanusGraphFactory;
 import org.junit.After;
 import org.junit.AfterClass;
index 3ef1bef..5eb0d99 100644 (file)
@@ -23,7 +23,9 @@ package org.onap.aai.domain.model;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.Multimap;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.junit.Assert;
 import org.junit.Before;
index 6d8508c..49baf78 100644 (file)
@@ -26,7 +26,10 @@ import static org.junit.Assert.assertTrue;
 import org.junit.Before;
 import org.junit.Test;
 import org.onap.aai.AAISetup;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
 import org.springframework.test.annotation.DirtiesContext;
 
index 664a69c..704f02a 100644 (file)
@@ -28,7 +28,10 @@ import static org.junit.Assert.assertTrue;
 import org.junit.Before;
 import org.junit.Test;
 import org.onap.aai.AAISetup;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
 import org.springframework.test.annotation.DirtiesContext;
 
index cd5bdb9..15ba9a5 100644 (file)
@@ -31,7 +31,10 @@ import java.net.URI;
 import org.junit.Before;
 import org.junit.Test;
 import org.onap.aai.AAISetup;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
 import org.springframework.test.annotation.DirtiesContext;
 
index a3380ee..2ca9700 100644 (file)
@@ -27,7 +27,10 @@ import static org.junit.Assert.assertTrue;
 import org.junit.Before;
 import org.junit.Test;
 import org.onap.aai.AAISetup;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
 import org.springframework.test.annotation.DirtiesContext;
 
index 88e148f..374ee55 100644 (file)
@@ -29,7 +29,10 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.onap.aai.AAISetup;
 import org.onap.aai.exceptions.AAIException;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.introspection.tools.IntrospectorValidator;
 import org.onap.aai.introspection.tools.Issue;
 import org.onap.aai.introspection.tools.IssueType;
index c10260d..0f5f47a 100644 (file)
  */
 package org.onap.aai.kafka;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 
-import java.time.Duration;
 import java.util.Collections;
-import java.util.List;
-
-import javax.ws.rs.core.Response;
 
 import org.apache.kafka.clients.consumer.Consumer;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
 import org.apache.kafka.clients.consumer.ConsumerRecords;
-import org.apache.kafka.common.TopicPartition;
-import org.json.JSONObject;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.onap.aai.AAISetup;
 import org.onap.aai.PayloadUtil;
-import org.onap.aai.restcore.HttpMethod;
 import org.skyscreamer.jsonassert.JSONAssert;
 import org.skyscreamer.jsonassert.JSONCompareMode;
 import org.springframework.beans.factory.annotation.Autowired;
index 730699e..e77f21a 100644 (file)
@@ -32,7 +32,6 @@ import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
 import org.springframework.kafka.core.ConsumerFactory;
 import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
 import org.springframework.kafka.core.KafkaAdmin;
-import org.springframework.test.context.TestPropertySource;
 
 @TestConfiguration
 public class KafkaTestConfiguration {
index 96a22d4..2675045 100644 (file)
@@ -40,7 +40,10 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.onap.aai.AAISetup;
 import org.onap.aai.exceptions.AAIException;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.IntrospectorFactory;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.nodes.NodeIngestor;
 import org.onap.aai.serialization.engines.JanusGraphDBEngine;
 import org.onap.aai.serialization.engines.QueryStyle;
index b0f6b24..accb471 100644 (file)
@@ -37,7 +37,10 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.onap.aai.AAISetup;
 import org.onap.aai.exceptions.AAIException;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.IntrospectorFactory;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.serialization.engines.JanusGraphDBEngine;
 import org.onap.aai.serialization.engines.QueryStyle;
 import org.onap.aai.serialization.engines.TransactionalGraphEngine;
index 68fc437..a2f04c7 100644 (file)
@@ -40,7 +40,10 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.onap.aai.AAISetup;
 import org.onap.aai.exceptions.AAIException;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.IntrospectorFactory;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.nodes.NodeIngestor;
 import org.onap.aai.serialization.engines.JanusGraphDBEngine;
 import org.onap.aai.serialization.engines.QueryStyle;
index 74914cc..ebef3cc 100644 (file)
@@ -23,20 +23,13 @@ package org.onap.aai.parsers.uri;
 import static org.hamcrest.Matchers.hasProperty;
 import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.inOrder;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URI;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
 
 import javax.annotation.PostConstruct;
 import javax.ws.rs.core.MultivaluedHashMap;
@@ -47,14 +40,12 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.mockito.ArgumentCaptor;
-import org.mockito.InOrder;
 import org.onap.aai.AAISetup;
 import org.onap.aai.edges.enums.EdgeType;
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.introspection.Introspector;
 import org.onap.aai.introspection.Loader;
 import org.onap.aai.introspection.ModelType;
-import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
 import org.onap.aai.setup.SchemaVersion;
 
 
index f9055b1..4bac547 100644 (file)
@@ -36,7 +36,9 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.onap.aai.AAISetup;
 import org.onap.aai.exceptions.AAIException;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.parsers.exceptions.DoesNotStartWithValidNamespaceException;
 
 public class URIToDBKeyTest extends AAISetup {
index 52aa470..2aad37a 100644 (file)
@@ -38,7 +38,10 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.onap.aai.AAISetup;
 import org.onap.aai.exceptions.AAIException;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
 import org.onap.aai.setup.SchemaVersion;
 import org.springframework.test.annotation.DirtiesContext;
index ee8cce2..f94d924 100644 (file)
@@ -38,7 +38,10 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.onap.aai.AAISetup;
 import org.onap.aai.exceptions.AAIException;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.setup.SchemaVersion;
 import org.springframework.test.annotation.DirtiesContext;
 
index 494d7e4..b408940 100644 (file)
@@ -22,7 +22,8 @@
 
 package org.onap.aai.rest;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
 
 import org.junit.Test;
 
index 5ecffbc..2578eef 100644 (file)
 
  import static org.onap.aai.edges.enums.AAIDirection.NONE;
  import static org.hamcrest.Matchers.containsString;
- import static org.hamcrest.Matchers.not;
  import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertFalse;
  import static org.junit.Assert.assertNull;
  import static org.junit.Assert.assertThat;
  import static org.junit.Assert.assertTrue;
  import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
  import static org.mockito.Mockito.verify;
@@ -42,8 +39,6 @@ import static org.mockito.Mockito.times;
  import com.fasterxml.jackson.core.JsonProcessingException;
  import com.fasterxml.jackson.databind.JsonMappingException;
  import com.fasterxml.jackson.databind.ObjectMapper;
- import com.google.gson.JsonObject;
- import com.google.gson.JsonParser;
 
  import java.io.UnsupportedEncodingException;
  import java.net.URI;
@@ -71,7 +66,6 @@ import static org.mockito.Mockito.times;
  import org.json.JSONArray;
  import org.json.JSONObject;
  import org.junit.After;
- import org.junit.Assert;
  import org.junit.Before;
  import org.junit.FixMethodOrder;
  import org.junit.Test;
@@ -86,7 +80,6 @@ import static org.mockito.Mockito.times;
  import org.onap.aai.exceptions.AAIException;
  import org.onap.aai.introspection.Introspector;
  import org.onap.aai.introspection.Loader;
- import org.onap.aai.introspection.ModelType;
  import org.onap.aai.parsers.query.QueryParser;
  import org.onap.aai.prevalidation.ValidationService;
  import org.onap.aai.query.builder.Pageable;
@@ -98,7 +91,6 @@ import static org.mockito.Mockito.times;
  import org.onap.aai.rest.db.responses.RelationshipWrapper;
  import org.onap.aai.rest.db.responses.ServiceException;
 import org.onap.aai.rest.notification.NotificationService;
-import org.onap.aai.rest.notification.UEBNotification;
 import org.onap.aai.restcore.HttpMethod;
  import org.onap.aai.serialization.engines.QueryStyle;
  import org.onap.aai.serialization.engines.TransactionalGraphEngine;
diff --git a/aai-core/src/test/java/org/onap/aai/rest/db/HttpEntryTransactionTest.java b/aai-core/src/test/java/org/onap/aai/rest/db/HttpEntryTransactionTest.java
new file mode 100644 (file)
index 0000000..0c2b22e
--- /dev/null
@@ -0,0 +1,126 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2024 Deutsche Telekom. 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.
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.aai.rest.db;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.UriBuilder;
+import javax.ws.rs.core.UriInfo;
+
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.janusgraph.core.JanusGraphException;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.onap.aai.AAISetup;
+import org.onap.aai.config.SpringContextAware;
+import org.onap.aai.exceptions.AAIException;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.parsers.query.QueryParser;
+import org.onap.aai.restcore.HttpMethod;
+import org.onap.aai.restcore.MediaType;
+import org.onap.aai.serialization.engines.TransactionalGraphEngine;
+
+import lombok.SneakyThrows;
+
+public class HttpEntryTransactionTest extends AAISetup {
+
+  @Mock UriInfo uriInfoMock;
+  @Mock MultivaluedMap<String, String> queryParamsMock;
+  @Mock HttpHeaders headersMock;
+
+  @Before
+  public void setup() {
+    when(uriInfoMock.getQueryParameters(anyBoolean())).thenReturn(queryParamsMock);
+    when(queryParamsMock.getFirst("depth")).thenReturn("0");
+    when(headersMock.getRequestHeader("aai-request-context")).thenReturn(null);
+  }
+
+  @Test
+  public void thatDBRequestsAreWritten() throws AAIException, UnsupportedEncodingException {
+    HttpEntry httpEntry = SpringContextAware.getBean("requestScopedTraversalUriHttpEntry", HttpEntry.class);
+    httpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
+    TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+    Loader loader = httpEntry.getLoader();
+
+    List<String> hostnames = Arrays.asList("test1", "test2", "test3");
+    List<DBRequest> dbRequests = createDbRequests(dbEngine, loader, hostnames);
+
+    httpEntry.process(dbRequests, SERVICE_NAME);
+
+    GraphTraversalSource source = dbEngine.startTransaction().traversal();
+    Long pserverCount = source.V().has("aai-node-type","pserver").count().next();
+    assertEquals(3, pserverCount.intValue());
+  }
+
+  @Test
+  // same test, only that JanusgraphException is thrown
+  public void thatDBRequestsAreRolledBack() throws AAIException, UnsupportedEncodingException {
+    HttpEntry httpEntry = SpringContextAware.getBean("requestScopedTraversalUriHttpEntry", HttpEntry.class);
+    httpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
+    TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+    Loader loader = httpEntry.getLoader();
+
+    List<String> hostnames = Arrays.asList("test1", "test2", "test3");
+    List<DBRequest> dbRequests = createDbRequests(dbEngine, loader, hostnames);
+
+    DBRequest request2Spy = spy(dbRequests.get(1));
+    QueryParser uriQuerySpy = spy(dbRequests.get(1).getParser());
+    when(request2Spy.getParser()).thenReturn(uriQuerySpy);
+    dbRequests.set(1, request2Spy);
+    when(uriQuerySpy.getQueryBuilder()).thenThrow(new JanusGraphException(""));
+
+    httpEntry.process(dbRequests, SERVICE_NAME);
+
+    GraphTraversalSource source = dbEngine.startTransaction().traversal();
+    Long pserverCount = source.V().has("aai-node-type","pserver").count().next();
+    assertEquals(0, pserverCount.intValue());
+  }
+
+  @SneakyThrows
+  private List<DBRequest> createDbRequests(TransactionalGraphEngine dbEngine, Loader loader, List<String> hostnames) {
+    List<DBRequest> dbRequests = new ArrayList<>();
+
+    for(String hostname: hostnames) {
+      URI uriObject = UriBuilder.fromPath("/cloud-infrastructure/pservers/pserver/" + hostname).build();
+      QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject);
+      String content = "{\"hostname\":\"" + hostname + "\"}";
+      Introspector obj = loader.unmarshal(uriQuery.getResultType(), content,MediaType.APPLICATION_JSON_TYPE);
+      DBRequest request = new DBRequest.Builder(HttpMethod.PUT, uriObject, uriQuery, obj, headersMock, uriInfoMock, "someTransaction")
+                      .rawRequestContent(content).build();
+      dbRequests.add(request);
+    }
+
+    return dbRequests;
+  }
+}
index b3556bb..95301c6 100644 (file)
@@ -24,7 +24,6 @@ import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyList;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
index 5dfa12b..517a43a 100644 (file)
@@ -27,7 +27,9 @@ import static org.junit.Assert.assertEquals;
 
 import com.google.common.collect.Multimap;
 
-import java.util.*;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.junit.Rule;
index 965e715..78b8a5a 100644 (file)
@@ -20,7 +20,7 @@
 
 package org.onap.aai.serialization.queryformats;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 
 import org.junit.Rule;
 import org.junit.Test;