From 1061bed55b6af0eaa5b8e4e2b64f77df1427fd12 Mon Sep 17 00:00:00 2001 From: Aravindan Ramkumar <1028385+aravindanr@users.noreply.github.com> Date: Tue, 4 May 2021 22:24:02 -0700 Subject: [PATCH] using Spring Boot's auto configuration to create an ObjectMapper. ObjectMapperProvider is used by the client and tests. --- cassandra-persistence/build.gradle | 15 ++ .../cassandra/dao/CassandraDAOTest.java | 4 +- .../ObjectMapperBuilderConfiguration.java | 36 +++++ .../config/ObjectMapperConfiguration.java | 40 +++-- .../common/config/ObjectMapperProvider.java | 152 ++++-------------- .../common/jackson/JsonProtoModule.java | 143 ++++++++++++++++ .../config/TestObjectMapperConfiguration.java | 30 ++++ .../conductor/common/run/TaskSummaryTest.java | 24 +-- .../common/utils/SummaryUtilTest.java | 43 ++--- .../workflow/SubWorkflowParamsTest.java | 49 +++--- contribs/build.gradle | 15 ++ .../sqs/DefaultEventQueueProcessorTest.java | 4 +- .../tasks/json/JsonJqTransformTest.java | 24 +-- .../tasks/kafka/KafkaPublishTaskTest.java | 45 +++--- core/build.gradle | 1 + .../events/TestDefaultEventProcessor.java | 67 ++++---- .../events/TestSimpleActionProcessor.java | 24 +-- .../core/execution/TestDeciderOutcomes.java | 4 +- .../core/execution/TestDeciderService.java | 28 +++- .../core/execution/TestWorkflowExecutor.java | 4 +- .../mapper/DecisionTaskMapperTest.java | 24 +-- .../core/execution/tasks/TestEvent.java | 24 +-- .../core/execution/tasks/TestSubWorkflow.java | 20 +-- .../orchestration/ExecutionDAOFacadeTest.java | 24 +-- .../ExternalPayloadStorageUtilsTest.java | 4 +- .../conductor/core/utils/JsonUtilsTest.java | 45 +++--- .../core/utils/ParametersUtilsTest.java | 45 +++--- es6-persistence/build.gradle | 14 ++ .../es6/dao/index/ElasticSearchTest.java | 24 +-- mysql-persistence/build.gradle | 14 ++ .../mysql/dao/MySQLExecutionDAOTest.java | 33 ++-- .../mysql/dao/MySQLMetadataDAOTest.java | 57 ++++--- .../mysql/dao/MySQLQueueDAOTest.java | 51 +++--- postgres-persistence/build.gradle | 15 ++ .../dao/PostgresExecutionDAOTest.java | 33 ++-- .../postgres/dao/PostgresMetadataDAOTest.java | 55 +++---- .../postgres/dao/PostgresQueueDAOTest.java | 49 +++--- redis-persistence/build.gradle | 14 ++ .../redis/dao/RedisEventHandlerDAOTest.java | 37 ++--- .../redis/dao/RedisExecutionDAOTest.java | 28 ++-- .../redis/dao/RedisMetadataDAOTest.java | 28 ++-- .../redis/dao/RedisPollDataDAOTest.java | 28 ++-- .../redis/dao/RedisRateLimitDAOTest.java | 26 +-- .../rest/startup/KitchenSinkInitializer.java | 31 ++-- server/build.gradle | 20 +++ .../config/ConductorObjectMapperTest.java | 37 +++-- 46 files changed, 895 insertions(+), 637 deletions(-) create mode 100644 common/src/main/java/com/netflix/conductor/common/config/ObjectMapperBuilderConfiguration.java create mode 100644 common/src/main/java/com/netflix/conductor/common/jackson/JsonProtoModule.java create mode 100644 common/src/test/java/com/netflix/conductor/common/config/TestObjectMapperConfiguration.java rename common/src/test/java/com/netflix/conductor/common/config/ObjectMapperTest.java => server/src/test/java/com/netflix/conductor/common/config/ConductorObjectMapperTest.java (71%) diff --git a/cassandra-persistence/build.gradle b/cassandra-persistence/build.gradle index ee40c4d2c2..af41a79069 100644 --- a/cassandra-persistence/build.gradle +++ b/cassandra-persistence/build.gradle @@ -1,3 +1,16 @@ +/* + * Copyright 2021 Netflix, Inc. + *

+ * 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. + */ + dependencies { implementation project(':conductor-common') implementation project(':conductor-core') @@ -11,5 +24,7 @@ dependencies { testImplementation("org.cassandraunit:cassandra-unit:${revCassandraUnit}") { exclude group: "com.datastax.cassandra", module: "cassandra-driver-core" } + testImplementation project(':conductor-core').sourceSets.test.output + testImplementation project(':conductor-common').sourceSets.test.output } diff --git a/cassandra-persistence/src/test/java/com/netflix/conductor/cassandra/dao/CassandraDAOTest.java b/cassandra-persistence/src/test/java/com/netflix/conductor/cassandra/dao/CassandraDAOTest.java index 5f1c76493f..86e55af37c 100644 --- a/cassandra-persistence/src/test/java/com/netflix/conductor/cassandra/dao/CassandraDAOTest.java +++ b/cassandra-persistence/src/test/java/com/netflix/conductor/cassandra/dao/CassandraDAOTest.java @@ -19,7 +19,7 @@ import com.netflix.conductor.cassandra.dao.CassandraBaseDAO.WorkflowMetadata; import com.netflix.conductor.cassandra.util.EmbeddedCassandra; import com.netflix.conductor.cassandra.util.Statements; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.events.EventExecution; import com.netflix.conductor.common.metadata.events.EventHandler; import com.netflix.conductor.common.metadata.tasks.Task; @@ -60,7 +60,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class CassandraDAOTest { diff --git a/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperBuilderConfiguration.java b/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperBuilderConfiguration.java new file mode 100644 index 0000000000..cd9766cf07 --- /dev/null +++ b/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperBuilderConfiguration.java @@ -0,0 +1,36 @@ +/* + * Copyright 2021 Netflix, Inc. + *

+ * 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. + */ + +package com.netflix.conductor.common.config; + +import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES; +import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES; +import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; + +@Configuration +public class ObjectMapperBuilderConfiguration { + + /** + * Disable features like {@link ObjectMapperProvider#getObjectMapper()}. + */ + @Bean + public Jackson2ObjectMapperBuilderCustomizer conductorJackson2ObjectMapperBuilderCustomizer() { + return builder -> builder.featuresToDisable(FAIL_ON_UNKNOWN_PROPERTIES, + FAIL_ON_IGNORED_PROPERTIES, + FAIL_ON_NULL_FOR_PRIMITIVES); + } +} diff --git a/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperConfiguration.java b/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperConfiguration.java index 413481beb2..496eb61730 100644 --- a/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperConfiguration.java +++ b/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperConfiguration.java @@ -1,26 +1,38 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.common.config; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import javax.annotation.PostConstruct; + @Configuration public class ObjectMapperConfiguration { - @Bean - public ObjectMapper objectMapper() { - return new ObjectMapperProvider().getObjectMapper(); + private final ObjectMapper objectMapper; + + public ObjectMapperConfiguration(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + + /** + * Set default property inclusion like {@link ObjectMapperProvider#getObjectMapper()}. + */ + @PostConstruct + public void customizeDefaultObjectMapper() { + objectMapper.setDefaultPropertyInclusion( + JsonInclude.Value.construct(JsonInclude.Include.NON_NULL, JsonInclude.Include.ALWAYS)); } } diff --git a/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperProvider.java b/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperProvider.java index 58ac585718..5c98d2894b 100644 --- a/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperProvider.java +++ b/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperProvider.java @@ -1,140 +1,42 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.common.config; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.google.protobuf.Any; -import com.google.protobuf.ByteString; -import com.google.protobuf.Message; - -import java.io.IOException; +import com.netflix.conductor.common.jackson.JsonProtoModule; +/** + * A Factory class for creating a customized {@link ObjectMapper}. This is only used by the + * conductor-client module and tests that rely on {@link ObjectMapper}. + * See TestObjectMapperConfiguration. + */ public class ObjectMapperProvider { /** - * JsonProtoModule can be registered into an {@link ObjectMapper} to enable the serialization and deserialization of - * ProtoBuf objects from/to JSON. - *

- * Right now this module only provides (de)serialization for the {@link Any} ProtoBuf type, as this is the only - * ProtoBuf object which we're currently exposing through the REST API. - *

- * {@see AnySerializer}, {@see AnyDeserializer} + * The customizations in this method are configured using {@link org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration} + * + * Customizations are spread across, + * 1. {@link ObjectMapperBuilderConfiguration} + * 2. {@link ObjectMapperConfiguration} + * 3. {@link JsonProtoModule} + * + * IMPORTANT: Changes in this method need to be also performed in the default {@link ObjectMapper} + * that Spring Boot creates. + * + * @see org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration */ - private static class JsonProtoModule extends SimpleModule { - - private final static String JSON_TYPE = "@type"; - private final static String JSON_VALUE = "@value"; - - /** - * AnySerializer converts a ProtoBuf {@link Any} object into its JSON representation. - *

- * This is not a canonical ProtoBuf JSON representation. Let us explain what we're trying to accomplish - * here: - *

- * The {@link Any} ProtoBuf message is a type in the PB standard library that can store any other arbitrary - * ProtoBuf message in a type-safe way, even when the server has no knowledge of the schema of the stored - * message. - *

- * It accomplishes this by storing a tuple of information: an URL-like type declaration for the stored message, - * and the serialized binary encoding of the stored message itself. Language specific implementations of - * ProtoBuf provide helper methods to encode and decode arbitrary messages into an {@link Any} object ({@link - * Any#pack(Message)} in Java). - *

- * We want to expose these {@link Any} objects in the REST API because they've been introduced as part of the - * new GRPC interface to Conductor, but unfortunately we cannot encode them using their canonical ProtoBuf JSON - * encoding. According to the docs: - *

- * The JSON representation of an `Any` value uses the regular representation of the deserialized, embedded - * message, with an additional field `@type` which contains the type URL. Example: - *

- * package google.profile; message Person { string first_name = 1; string last_name = 2; } { "@type": - * "type.googleapis.com/google.profile.Person", "firstName": , "lastName": } - *

- * In order to accomplish this representation, the PB-JSON encoder needs to have knowledge of all the ProtoBuf - * messages that could be serialized inside the {@link Any} message. This is not possible to accomplish inside - * the Conductor server, which is simply passing through arbitrary payloads from/to clients. - *

- * Consequently, to actually expose the Message through the REST API, we must create a custom encoding that - * contains the raw data of the serialized message, as we are not able to deserialize it on the server. We - * simply return a dictionary with '@type' and '@value' keys, where '@type' is identical to the canonical - * representation, but '@value' contains a base64 encoded string with the binary data of the serialized - * message. - *

- * Since all the provided Conductor clients are required to know this encoding, it's always possible to re-build - * the original {@link Any} message regardless of the client's language. - *

- * {@see AnyDeserializer} - */ - @SuppressWarnings("InnerClassMayBeStatic") - protected class AnySerializer extends JsonSerializer { - - @Override - public void serialize(Any value, JsonGenerator jgen, SerializerProvider provider) - throws IOException { - jgen.writeStartObject(); - jgen.writeStringField(JSON_TYPE, value.getTypeUrl()); - jgen.writeBinaryField(JSON_VALUE, value.getValue().toByteArray()); - jgen.writeEndObject(); - } - } - - /** - * AnyDeserializer converts the custom JSON representation of an {@link Any} value into its original form. - *

- * {@see AnySerializer} for details on this representation. - */ - @SuppressWarnings("InnerClassMayBeStatic") - protected class AnyDeserializer extends JsonDeserializer { - - @Override - public Any deserialize(JsonParser p, DeserializationContext ctxt) - throws IOException { - JsonNode root = p.getCodec().readTree(p); - JsonNode type = root.get(JSON_TYPE); - JsonNode value = root.get(JSON_VALUE); - - if (type == null || !type.isTextual()) { - ctxt.reportMappingException("invalid '@type' field when deserializing ProtoBuf Any object"); - } - - if (value == null || !value.isTextual()) { - ctxt.reportMappingException("invalid '@value' field when deserializing ProtoBuf Any object"); - } - - return Any.newBuilder() - .setTypeUrl(type.textValue()) - .setValue(ByteString.copyFrom(value.binaryValue())) - .build(); - } - } - - public JsonProtoModule() { - super("ConductorJsonProtoModule"); - addSerializer(Any.class, new AnySerializer()); - addDeserializer(Any.class, new AnyDeserializer()); - } - } - public ObjectMapper getObjectMapper() { final ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); diff --git a/common/src/main/java/com/netflix/conductor/common/jackson/JsonProtoModule.java b/common/src/main/java/com/netflix/conductor/common/jackson/JsonProtoModule.java new file mode 100644 index 0000000000..7819c2013e --- /dev/null +++ b/common/src/main/java/com/netflix/conductor/common/jackson/JsonProtoModule.java @@ -0,0 +1,143 @@ +/* + * Copyright 2021 Netflix, Inc. + *

+ * 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. + */ + +package com.netflix.conductor.common.jackson; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.google.protobuf.Any; +import com.google.protobuf.ByteString; +import com.google.protobuf.Message; +import org.springframework.stereotype.Component; + +import java.io.IOException; + +/** + * JsonProtoModule can be registered into an {@link ObjectMapper} to enable the serialization and deserialization of + * ProtoBuf objects from/to JSON. + * + *

+ * Right now this module only provides (de)serialization for the {@link Any} ProtoBuf type, as this is the only + * ProtoBuf object which we're currently exposing through the REST API. + *

+ * + *

Annotated as {@link Component} so Spring can register it with {@link ObjectMapper}

+ * + * @see AnySerializer + * @see AnyDeserializer + * @see org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration + */ +@Component(JsonProtoModule.NAME) +public class JsonProtoModule extends SimpleModule { + + public static final String NAME = "ConductorJsonProtoModule"; + + private final static String JSON_TYPE = "@type"; + private final static String JSON_VALUE = "@value"; + + /** + * AnySerializer converts a ProtoBuf {@link Any} object into its JSON representation. + *

+ * This is not a canonical ProtoBuf JSON representation. Let us explain what we're trying to accomplish + * here: + *

+ * The {@link Any} ProtoBuf message is a type in the PB standard library that can store any other arbitrary + * ProtoBuf message in a type-safe way, even when the server has no knowledge of the schema of the stored + * message. + *

+ * It accomplishes this by storing a tuple of information: an URL-like type declaration for the stored message, + * and the serialized binary encoding of the stored message itself. Language specific implementations of + * ProtoBuf provide helper methods to encode and decode arbitrary messages into an {@link Any} object ({@link + * Any#pack(Message)} in Java). + *

+ * We want to expose these {@link Any} objects in the REST API because they've been introduced as part of the + * new GRPC interface to Conductor, but unfortunately we cannot encode them using their canonical ProtoBuf JSON + * encoding. According to the docs: + *

+ * The JSON representation of an `Any` value uses the regular representation of the deserialized, embedded + * message, with an additional field `@type` which contains the type URL. Example: + *

+ * package google.profile; message Person { string first_name = 1; string last_name = 2; } { "@type": + * "type.googleapis.com/google.profile.Person", "firstName": , "lastName": } + *

+ * In order to accomplish this representation, the PB-JSON encoder needs to have knowledge of all the ProtoBuf + * messages that could be serialized inside the {@link Any} message. This is not possible to accomplish inside + * the Conductor server, which is simply passing through arbitrary payloads from/to clients. + *

+ * Consequently, to actually expose the Message through the REST API, we must create a custom encoding that + * contains the raw data of the serialized message, as we are not able to deserialize it on the server. We + * simply return a dictionary with '@type' and '@value' keys, where '@type' is identical to the canonical + * representation, but '@value' contains a base64 encoded string with the binary data of the serialized + * message. + *

+ * Since all the provided Conductor clients are required to know this encoding, it's always possible to re-build + * the original {@link Any} message regardless of the client's language. + *

+ * {@see AnyDeserializer} + */ + @SuppressWarnings("InnerClassMayBeStatic") + protected class AnySerializer extends JsonSerializer { + + @Override + public void serialize(Any value, JsonGenerator jgen, SerializerProvider provider) + throws IOException { + jgen.writeStartObject(); + jgen.writeStringField(JSON_TYPE, value.getTypeUrl()); + jgen.writeBinaryField(JSON_VALUE, value.getValue().toByteArray()); + jgen.writeEndObject(); + } + } + + /** + * AnyDeserializer converts the custom JSON representation of an {@link Any} value into its original form. + *

+ * {@see AnySerializer} for details on this representation. + */ + @SuppressWarnings("InnerClassMayBeStatic") + protected class AnyDeserializer extends JsonDeserializer { + + @Override + public Any deserialize(JsonParser p, DeserializationContext ctxt) + throws IOException { + JsonNode root = p.getCodec().readTree(p); + JsonNode type = root.get(JSON_TYPE); + JsonNode value = root.get(JSON_VALUE); + + if (type == null || !type.isTextual()) { + ctxt.reportMappingException("invalid '@type' field when deserializing ProtoBuf Any object"); + } + + if (value == null || !value.isTextual()) { + ctxt.reportMappingException("invalid '@value' field when deserializing ProtoBuf Any object"); + } + + return Any.newBuilder() + .setTypeUrl(type.textValue()) + .setValue(ByteString.copyFrom(value.binaryValue())) + .build(); + } + } + + public JsonProtoModule() { + super(NAME); + addSerializer(Any.class, new AnySerializer()); + addDeserializer(Any.class, new AnyDeserializer()); + } +} diff --git a/common/src/test/java/com/netflix/conductor/common/config/TestObjectMapperConfiguration.java b/common/src/test/java/com/netflix/conductor/common/config/TestObjectMapperConfiguration.java new file mode 100644 index 0000000000..ccfe6793b3 --- /dev/null +++ b/common/src/test/java/com/netflix/conductor/common/config/TestObjectMapperConfiguration.java @@ -0,0 +1,30 @@ +/* + * Copyright 2021 Netflix, Inc. + *

+ * 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. + */ + +package com.netflix.conductor.common.config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Supplies the standard Conductor {@link ObjectMapper} for tests that need them. + */ +@Configuration +public class TestObjectMapperConfiguration { + + @Bean + public ObjectMapper testObjectMapper() { + return new ObjectMapperProvider().getObjectMapper(); + } +} diff --git a/common/src/test/java/com/netflix/conductor/common/run/TaskSummaryTest.java b/common/src/test/java/com/netflix/conductor/common/run/TaskSummaryTest.java index 0a67384ae3..b849cb8665 100644 --- a/common/src/test/java/com/netflix/conductor/common/run/TaskSummaryTest.java +++ b/common/src/test/java/com/netflix/conductor/common/run/TaskSummaryTest.java @@ -1,19 +1,19 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.common.run; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.Task; import org.junit.Test; import org.junit.runner.RunWith; @@ -23,7 +23,7 @@ import static org.junit.Assert.assertNotNull; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class TaskSummaryTest { diff --git a/common/src/test/java/com/netflix/conductor/common/utils/SummaryUtilTest.java b/common/src/test/java/com/netflix/conductor/common/utils/SummaryUtilTest.java index c7901a2df5..309c3a1172 100644 --- a/common/src/test/java/com/netflix/conductor/common/utils/SummaryUtilTest.java +++ b/common/src/test/java/com/netflix/conductor/common/utils/SummaryUtilTest.java @@ -1,40 +1,41 @@ /* - * Copyright 2021 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.common.utils; -import static org.junit.jupiter.api.Assertions.assertEquals; - import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class, SummaryUtilTest.SummaryUtilTestConfiguration.class}) +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class, SummaryUtilTest.SummaryUtilTestConfiguration.class}) @RunWith(SpringRunner.class) public class SummaryUtilTest { - @TestConfiguration + @Configuration static class SummaryUtilTestConfiguration { @Bean @@ -87,4 +88,4 @@ public void testSerializeInputOutput_jsonSerializationEnabled() throws Exception "The ObjectMapper Json Serialization should match the serialized Test Object"); }); } -} \ No newline at end of file +} diff --git a/common/src/test/java/com/netflix/conductor/common/workflow/SubWorkflowParamsTest.java b/common/src/test/java/com/netflix/conductor/common/workflow/SubWorkflowParamsTest.java index b8ef9472d9..88d5a4baef 100644 --- a/common/src/test/java/com/netflix/conductor/common/workflow/SubWorkflowParamsTest.java +++ b/common/src/test/java/com/netflix/conductor/common/workflow/SubWorkflowParamsTest.java @@ -1,43 +1,44 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.common.workflow; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.workflow.SubWorkflowParams; import com.netflix.conductor.common.metadata.workflow.WorkflowDef; import com.netflix.conductor.common.metadata.workflow.WorkflowTask; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; -import javax.validation.ValidatorFactory; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; +import javax.validation.ValidatorFactory; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class SubWorkflowParamsTest { diff --git a/contribs/build.gradle b/contribs/build.gradle index c1f5793068..93ea5b8e6c 100644 --- a/contribs/build.gradle +++ b/contribs/build.gradle @@ -1,3 +1,16 @@ +/* + * Copyright 2021 Netflix, Inc. + *

+ * 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. + */ + dependencies { implementation project(':conductor-common') implementation project(':conductor-core') @@ -31,4 +44,6 @@ dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-web' testImplementation "org.testcontainers:mockserver:${revTestContainer}" testImplementation "org.mock-server:mockserver-client-java:${revMockServerClient}" + + testImplementation project(':conductor-common').sourceSets.test.output } diff --git a/contribs/src/test/java/com/netflix/conductor/contribs/queue/sqs/DefaultEventQueueProcessorTest.java b/contribs/src/test/java/com/netflix/conductor/contribs/queue/sqs/DefaultEventQueueProcessorTest.java index 22891a9703..3fe0ffcaba 100644 --- a/contribs/src/test/java/com/netflix/conductor/contribs/queue/sqs/DefaultEventQueueProcessorTest.java +++ b/contribs/src/test/java/com/netflix/conductor/contribs/queue/sqs/DefaultEventQueueProcessorTest.java @@ -14,7 +14,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.util.concurrent.Uninterruptibles; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.metadata.tasks.Task.Status; import com.netflix.conductor.common.run.Workflow; @@ -49,7 +49,7 @@ import static org.mockito.Mockito.when; @SuppressWarnings("unchecked") -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class DefaultEventQueueProcessorTest { diff --git a/contribs/src/test/java/com/netflix/conductor/contribs/tasks/json/JsonJqTransformTest.java b/contribs/src/test/java/com/netflix/conductor/contribs/tasks/json/JsonJqTransformTest.java index fde96d6039..3c5e15bdd4 100644 --- a/contribs/src/test/java/com/netflix/conductor/contribs/tasks/json/JsonJqTransformTest.java +++ b/contribs/src/test/java/com/netflix/conductor/contribs/tasks/json/JsonJqTransformTest.java @@ -1,19 +1,19 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.contribs.tasks.json; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.run.Workflow; import org.junit.Test; @@ -30,7 +30,7 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class JsonJqTransformTest { diff --git a/contribs/src/test/java/com/netflix/conductor/contribs/tasks/kafka/KafkaPublishTaskTest.java b/contribs/src/test/java/com/netflix/conductor/contribs/tasks/kafka/KafkaPublishTaskTest.java index 6f8d8c22e7..ccafd84c7e 100644 --- a/contribs/src/test/java/com/netflix/conductor/contribs/tasks/kafka/KafkaPublishTaskTest.java +++ b/contribs/src/test/java/com/netflix/conductor/contribs/tasks/kafka/KafkaPublishTaskTest.java @@ -1,32 +1,22 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.contribs.tasks.kafka; -import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.run.Workflow; import com.netflix.conductor.core.execution.WorkflowExecutor; -import java.time.Duration; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.common.serialization.IntegerSerializer; import org.apache.kafka.common.serialization.LongSerializer; @@ -36,8 +26,19 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; +import java.time.Duration; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + +import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + @SuppressWarnings({"unchecked", "rawtypes"}) -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class KafkaPublishTaskTest { diff --git a/core/build.gradle b/core/build.gradle index 7e982cf619..ed384f57de 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -45,4 +45,5 @@ dependencies { implementation "org.glassfish.jaxb:jaxb-runtime:${revJAXB}" testImplementation 'org.springframework.boot:spring-boot-starter-validation' + testImplementation project(':conductor-common').sourceSets.test.output } diff --git a/core/src/test/java/com/netflix/conductor/core/events/TestDefaultEventProcessor.java b/core/src/test/java/com/netflix/conductor/core/events/TestDefaultEventProcessor.java index 6803afcf61..38a486c4d5 100644 --- a/core/src/test/java/com/netflix/conductor/core/events/TestDefaultEventProcessor.java +++ b/core/src/test/java/com/netflix/conductor/core/events/TestDefaultEventProcessor.java @@ -1,33 +1,19 @@ /* - * Copyright 2021 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.core.events; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyMap; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.atMost; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.events.EventExecution; import com.netflix.conductor.common.metadata.events.EventHandler; import com.netflix.conductor.common.metadata.events.EventHandler.Action; @@ -45,13 +31,6 @@ import com.netflix.conductor.core.utils.ParametersUtils; import com.netflix.conductor.service.ExecutionService; import com.netflix.conductor.service.MetadataService; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -60,7 +39,29 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyMap; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.atMost; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class TestDefaultEventProcessor { diff --git a/core/src/test/java/com/netflix/conductor/core/events/TestSimpleActionProcessor.java b/core/src/test/java/com/netflix/conductor/core/events/TestSimpleActionProcessor.java index d8a3f69b24..2b992399d0 100644 --- a/core/src/test/java/com/netflix/conductor/core/events/TestSimpleActionProcessor.java +++ b/core/src/test/java/com/netflix/conductor/core/events/TestSimpleActionProcessor.java @@ -1,19 +1,19 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.core.events; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.events.EventHandler.Action; import com.netflix.conductor.common.metadata.events.EventHandler.Action.Type; import com.netflix.conductor.common.metadata.events.EventHandler.StartWorkflow; @@ -49,7 +49,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class TestSimpleActionProcessor { diff --git a/core/src/test/java/com/netflix/conductor/core/execution/TestDeciderOutcomes.java b/core/src/test/java/com/netflix/conductor/core/execution/TestDeciderOutcomes.java index 86462bfbf7..344bbbca51 100644 --- a/core/src/test/java/com/netflix/conductor/core/execution/TestDeciderOutcomes.java +++ b/core/src/test/java/com/netflix/conductor/core/execution/TestDeciderOutcomes.java @@ -13,7 +13,7 @@ package com.netflix.conductor.core.execution; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.metadata.tasks.Task.Status; import com.netflix.conductor.common.metadata.tasks.TaskDef; @@ -86,7 +86,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class, TestDeciderOutcomes.TestConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class, TestDeciderOutcomes.TestConfiguration.class}) @RunWith(SpringRunner.class) public class TestDeciderOutcomes { diff --git a/core/src/test/java/com/netflix/conductor/core/execution/TestDeciderService.java b/core/src/test/java/com/netflix/conductor/core/execution/TestDeciderService.java index e61eac3eb6..3ed3b73526 100644 --- a/core/src/test/java/com/netflix/conductor/core/execution/TestDeciderService.java +++ b/core/src/test/java/com/netflix/conductor/core/execution/TestDeciderService.java @@ -13,7 +13,7 @@ package com.netflix.conductor.core.execution; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.metadata.tasks.Task.Status; import com.netflix.conductor.common.metadata.tasks.TaskDef; @@ -64,13 +64,33 @@ import java.io.IOException; import java.io.InputStream; import java.time.Duration; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import static com.netflix.conductor.common.metadata.tasks.TaskType.*; +import static com.netflix.conductor.common.metadata.tasks.TaskType.DECISION; +import static com.netflix.conductor.common.metadata.tasks.TaskType.DYNAMIC; +import static com.netflix.conductor.common.metadata.tasks.TaskType.EVENT; +import static com.netflix.conductor.common.metadata.tasks.TaskType.FORK_JOIN; +import static com.netflix.conductor.common.metadata.tasks.TaskType.FORK_JOIN_DYNAMIC; +import static com.netflix.conductor.common.metadata.tasks.TaskType.HTTP; +import static com.netflix.conductor.common.metadata.tasks.TaskType.JOIN; +import static com.netflix.conductor.common.metadata.tasks.TaskType.SIMPLE; +import static com.netflix.conductor.common.metadata.tasks.TaskType.SUB_WORKFLOW; +import static com.netflix.conductor.common.metadata.tasks.TaskType.TASK_TYPE_SUB_WORKFLOW; +import static com.netflix.conductor.common.metadata.tasks.TaskType.TASK_TYPE_TERMINATE; +import static com.netflix.conductor.common.metadata.tasks.TaskType.USER_DEFINED; +import static com.netflix.conductor.common.metadata.tasks.TaskType.WAIT; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -87,7 +107,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class, TestDeciderService.TestConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class, TestDeciderService.TestConfiguration.class}) @RunWith(SpringRunner.class) public class TestDeciderService { diff --git a/core/src/test/java/com/netflix/conductor/core/execution/TestWorkflowExecutor.java b/core/src/test/java/com/netflix/conductor/core/execution/TestWorkflowExecutor.java index 4be6958626..ece22b8fc8 100644 --- a/core/src/test/java/com/netflix/conductor/core/execution/TestWorkflowExecutor.java +++ b/core/src/test/java/com/netflix/conductor/core/execution/TestWorkflowExecutor.java @@ -57,7 +57,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.util.concurrent.Uninterruptibles; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.PollData; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.metadata.tasks.Task.Status; @@ -126,7 +126,7 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class, TestWorkflowExecutor.TestConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class, TestWorkflowExecutor.TestConfiguration.class}) @RunWith(SpringRunner.class) public class TestWorkflowExecutor { diff --git a/core/src/test/java/com/netflix/conductor/core/execution/mapper/DecisionTaskMapperTest.java b/core/src/test/java/com/netflix/conductor/core/execution/mapper/DecisionTaskMapperTest.java index 6bc4f8d28a..092ba21029 100644 --- a/core/src/test/java/com/netflix/conductor/core/execution/mapper/DecisionTaskMapperTest.java +++ b/core/src/test/java/com/netflix/conductor/core/execution/mapper/DecisionTaskMapperTest.java @@ -1,19 +1,19 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.core.execution.mapper; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.metadata.tasks.TaskDef; import com.netflix.conductor.common.metadata.tasks.TaskType; @@ -43,7 +43,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class DecisionTaskMapperTest { diff --git a/core/src/test/java/com/netflix/conductor/core/execution/tasks/TestEvent.java b/core/src/test/java/com/netflix/conductor/core/execution/tasks/TestEvent.java index 90b6e04215..9f00ac7279 100644 --- a/core/src/test/java/com/netflix/conductor/core/execution/tasks/TestEvent.java +++ b/core/src/test/java/com/netflix/conductor/core/execution/tasks/TestEvent.java @@ -1,19 +1,19 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.core.execution.tasks; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.metadata.tasks.Task.Status; import com.netflix.conductor.common.metadata.tasks.TaskType; @@ -52,7 +52,7 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class TestEvent { diff --git a/core/src/test/java/com/netflix/conductor/core/execution/tasks/TestSubWorkflow.java b/core/src/test/java/com/netflix/conductor/core/execution/tasks/TestSubWorkflow.java index 267412fe53..d3f513a377 100644 --- a/core/src/test/java/com/netflix/conductor/core/execution/tasks/TestSubWorkflow.java +++ b/core/src/test/java/com/netflix/conductor/core/execution/tasks/TestSubWorkflow.java @@ -1,19 +1,19 @@ /* - * Copyright 2021 Netflix, Inc. + * Copyright 2021 Netflix, Inc. *

* 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. + * 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 com.netflix.conductor.core.execution.tasks; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.metadata.workflow.WorkflowDef; import com.netflix.conductor.common.run.Workflow; @@ -38,7 +38,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class TestSubWorkflow { diff --git a/core/src/test/java/com/netflix/conductor/core/orchestration/ExecutionDAOFacadeTest.java b/core/src/test/java/com/netflix/conductor/core/orchestration/ExecutionDAOFacadeTest.java index eb38cadce4..5de1fb5287 100644 --- a/core/src/test/java/com/netflix/conductor/core/orchestration/ExecutionDAOFacadeTest.java +++ b/core/src/test/java/com/netflix/conductor/core/orchestration/ExecutionDAOFacadeTest.java @@ -1,19 +1,19 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.core.orchestration; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.events.EventExecution; import com.netflix.conductor.common.run.SearchResult; import com.netflix.conductor.common.run.Workflow; @@ -52,7 +52,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class ExecutionDAOFacadeTest { diff --git a/core/src/test/java/com/netflix/conductor/core/utils/ExternalPayloadStorageUtilsTest.java b/core/src/test/java/com/netflix/conductor/core/utils/ExternalPayloadStorageUtilsTest.java index 317930cc9d..be30c40a61 100644 --- a/core/src/test/java/com/netflix/conductor/core/utils/ExternalPayloadStorageUtilsTest.java +++ b/core/src/test/java/com/netflix/conductor/core/utils/ExternalPayloadStorageUtilsTest.java @@ -13,7 +13,7 @@ package com.netflix.conductor.core.utils; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.metadata.workflow.WorkflowDef; import com.netflix.conductor.common.run.ExternalStorageLocation; @@ -48,7 +48,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class ExternalPayloadStorageUtilsTest { diff --git a/core/src/test/java/com/netflix/conductor/core/utils/JsonUtilsTest.java b/core/src/test/java/com/netflix/conductor/core/utils/JsonUtilsTest.java index 98182187d4..8f2836b9e4 100644 --- a/core/src/test/java/com/netflix/conductor/core/utils/JsonUtilsTest.java +++ b/core/src/test/java/com/netflix/conductor/core/utils/JsonUtilsTest.java @@ -1,29 +1,19 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.core.utils; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -31,7 +21,18 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class JsonUtilsTest { diff --git a/core/src/test/java/com/netflix/conductor/core/utils/ParametersUtilsTest.java b/core/src/test/java/com/netflix/conductor/core/utils/ParametersUtilsTest.java index 3564e0a663..5f05adf579 100644 --- a/core/src/test/java/com/netflix/conductor/core/utils/ParametersUtilsTest.java +++ b/core/src/test/java/com/netflix/conductor/core/utils/ParametersUtilsTest.java @@ -1,24 +1,27 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.core.utils; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; @@ -29,14 +32,12 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicReference; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) @SuppressWarnings("rawtypes") public class ParametersUtilsTest { diff --git a/es6-persistence/build.gradle b/es6-persistence/build.gradle index 6fe4ff09b1..f4d2d430bf 100644 --- a/es6-persistence/build.gradle +++ b/es6-persistence/build.gradle @@ -1,3 +1,16 @@ +/* + * Copyright 2021 Netflix, Inc. + *

+ * 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. + */ + dependencies { implementation project(':conductor-common') implementation project(':conductor-core') @@ -15,4 +28,5 @@ dependencies { testImplementation "org.awaitility:awaitility:${revAwaitility}" testImplementation "org.testcontainers:elasticsearch:${revTestContainer}" + testImplementation project(':conductor-common').sourceSets.test.output } diff --git a/es6-persistence/src/test/java/com/netflix/conductor/es6/dao/index/ElasticSearchTest.java b/es6-persistence/src/test/java/com/netflix/conductor/es6/dao/index/ElasticSearchTest.java index 4145057f92..46bd0f80ce 100644 --- a/es6-persistence/src/test/java/com/netflix/conductor/es6/dao/index/ElasticSearchTest.java +++ b/es6-persistence/src/test/java/com/netflix/conductor/es6/dao/index/ElasticSearchTest.java @@ -1,19 +1,19 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.es6.dao.index; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.es6.config.ElasticSearchProperties; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -27,7 +27,7 @@ import org.testcontainers.elasticsearch.ElasticsearchContainer; import org.testcontainers.utility.DockerImageName; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class, ElasticSearchTest.TestConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class, ElasticSearchTest.TestConfiguration.class}) @RunWith(SpringRunner.class) @TestPropertySource(properties = {"conductor.indexing.enabled=true","conductor.elasticsearch.version=6"}) abstract class ElasticSearchTest { diff --git a/mysql-persistence/build.gradle b/mysql-persistence/build.gradle index 3de1d2fb11..a5c1e0023c 100644 --- a/mysql-persistence/build.gradle +++ b/mysql-persistence/build.gradle @@ -1,3 +1,16 @@ +/* + * Copyright 2021 Netflix, Inc. + *

+ * 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. + */ + dependencies { implementation project(':conductor-common') implementation project(':conductor-core') @@ -18,6 +31,7 @@ dependencies { testImplementation "org.testcontainers:mysql:${revTestContainer}" testImplementation "org.testinfected.hamcrest-matchers:all-matchers:${revHamcrestAllMatchers}" testImplementation project(':conductor-core').sourceSets.test.output + testImplementation project(':conductor-common').sourceSets.test.output } test { diff --git a/mysql-persistence/src/test/java/com/netflix/conductor/mysql/dao/MySQLExecutionDAOTest.java b/mysql-persistence/src/test/java/com/netflix/conductor/mysql/dao/MySQLExecutionDAOTest.java index c0a215a4d0..f91faf479d 100644 --- a/mysql-persistence/src/test/java/com/netflix/conductor/mysql/dao/MySQLExecutionDAOTest.java +++ b/mysql-persistence/src/test/java/com/netflix/conductor/mysql/dao/MySQLExecutionDAOTest.java @@ -1,28 +1,24 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.mysql.dao; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.workflow.WorkflowDef; import com.netflix.conductor.common.run.Workflow; import com.netflix.conductor.dao.ExecutionDAO; import com.netflix.conductor.dao.ExecutionDAOTest; import com.netflix.conductor.mysql.util.MySQLDAOTestUtil; -import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -35,7 +31,12 @@ import org.testcontainers.containers.MySQLContainer; import org.testcontainers.utility.DockerImageName; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class MySQLExecutionDAOTest extends ExecutionDAOTest { diff --git a/mysql-persistence/src/test/java/com/netflix/conductor/mysql/dao/MySQLMetadataDAOTest.java b/mysql-persistence/src/test/java/com/netflix/conductor/mysql/dao/MySQLMetadataDAOTest.java index 1d84cc950b..7a167aa265 100644 --- a/mysql-persistence/src/test/java/com/netflix/conductor/mysql/dao/MySQLMetadataDAOTest.java +++ b/mysql-persistence/src/test/java/com/netflix/conductor/mysql/dao/MySQLMetadataDAOTest.java @@ -1,44 +1,27 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.mysql.dao; -import static com.netflix.conductor.core.exception.ApplicationException.Code.CONFLICT; -import static com.netflix.conductor.core.exception.ApplicationException.Code.NOT_FOUND; -import static org.hamcrest.Matchers.hasProperty; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.events.EventHandler; import com.netflix.conductor.common.metadata.tasks.TaskDef; import com.netflix.conductor.common.metadata.workflow.WorkflowDef; import com.netflix.conductor.core.exception.ApplicationException; import com.netflix.conductor.mysql.util.MySQLDAOTestUtil; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.UUID; -import java.util.stream.Collectors; import org.apache.commons.lang3.builder.EqualsBuilder; import org.junit.After; import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -50,7 +33,23 @@ import org.testcontainers.containers.MySQLContainer; import org.testcontainers.utility.DockerImageName; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +import java.util.Arrays; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; + +import static com.netflix.conductor.core.exception.ApplicationException.Code.CONFLICT; +import static com.netflix.conductor.core.exception.ApplicationException.Code.NOT_FOUND; +import static org.hamcrest.Matchers.hasProperty; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class MySQLMetadataDAOTest { diff --git a/mysql-persistence/src/test/java/com/netflix/conductor/mysql/dao/MySQLQueueDAOTest.java b/mysql-persistence/src/test/java/com/netflix/conductor/mysql/dao/MySQLQueueDAOTest.java index 10801d8505..114c9c2b96 100644 --- a/mysql-persistence/src/test/java/com/netflix/conductor/mysql/dao/MySQLQueueDAOTest.java +++ b/mysql-persistence/src/test/java/com/netflix/conductor/mysql/dao/MySQLQueueDAOTest.java @@ -1,39 +1,25 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.mysql.dao; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.ImmutableList; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.core.events.queue.Message; import com.netflix.conductor.mysql.util.MySQLDAOTestUtil; import com.netflix.conductor.mysql.util.Query; -import java.sql.Connection; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; import org.junit.After; import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -47,7 +33,20 @@ import org.testcontainers.containers.MySQLContainer; import org.testcontainers.utility.DockerImageName; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class MySQLQueueDAOTest { diff --git a/postgres-persistence/build.gradle b/postgres-persistence/build.gradle index 94cc5d1a54..22cad03c1a 100644 --- a/postgres-persistence/build.gradle +++ b/postgres-persistence/build.gradle @@ -1,3 +1,16 @@ +/* + * Copyright 2021 Netflix, Inc. + *

+ * 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. + */ + dependencies { implementation project(':conductor-common') implementation project(':conductor-core') @@ -16,7 +29,9 @@ dependencies { testImplementation "org.testcontainers:postgresql:${revTestContainer}" testImplementation "org.testinfected.hamcrest-matchers:all-matchers:${revHamcrestAllMatchers}" + testImplementation project(':conductor-core').sourceSets.test.output + testImplementation project(':conductor-common').sourceSets.test.output } test { diff --git a/postgres-persistence/src/test/java/com/netflix/conductor/postgres/dao/PostgresExecutionDAOTest.java b/postgres-persistence/src/test/java/com/netflix/conductor/postgres/dao/PostgresExecutionDAOTest.java index 936205b171..77f4241c50 100644 --- a/postgres-persistence/src/test/java/com/netflix/conductor/postgres/dao/PostgresExecutionDAOTest.java +++ b/postgres-persistence/src/test/java/com/netflix/conductor/postgres/dao/PostgresExecutionDAOTest.java @@ -1,28 +1,24 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.postgres.dao; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.workflow.WorkflowDef; import com.netflix.conductor.common.run.Workflow; import com.netflix.conductor.dao.ExecutionDAO; import com.netflix.conductor.dao.ExecutionDAOTest; import com.netflix.conductor.postgres.util.PostgresDAOTestUtil; -import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -35,7 +31,12 @@ import org.testcontainers.containers.PostgreSQLContainer; import org.testcontainers.utility.DockerImageName; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class PostgresExecutionDAOTest extends ExecutionDAOTest { diff --git a/postgres-persistence/src/test/java/com/netflix/conductor/postgres/dao/PostgresMetadataDAOTest.java b/postgres-persistence/src/test/java/com/netflix/conductor/postgres/dao/PostgresMetadataDAOTest.java index 671cd4a48e..138a0c40d4 100644 --- a/postgres-persistence/src/test/java/com/netflix/conductor/postgres/dao/PostgresMetadataDAOTest.java +++ b/postgres-persistence/src/test/java/com/netflix/conductor/postgres/dao/PostgresMetadataDAOTest.java @@ -1,39 +1,24 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.postgres.dao; -import static com.netflix.conductor.core.exception.ApplicationException.Code.CONFLICT; -import static com.netflix.conductor.core.exception.ApplicationException.Code.NOT_FOUND; -import static org.hamcrest.Matchers.hasProperty; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.events.EventHandler; import com.netflix.conductor.common.metadata.tasks.TaskDef; import com.netflix.conductor.common.metadata.workflow.WorkflowDef; import com.netflix.conductor.core.exception.ApplicationException; import com.netflix.conductor.postgres.util.PostgresDAOTestUtil; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.UUID; -import java.util.stream.Collectors; import org.apache.commons.lang3.builder.EqualsBuilder; import org.junit.After; import org.junit.Before; @@ -48,7 +33,23 @@ import org.testcontainers.containers.PostgreSQLContainer; import org.testcontainers.utility.DockerImageName; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +import java.util.Arrays; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; + +import static com.netflix.conductor.core.exception.ApplicationException.Code.CONFLICT; +import static com.netflix.conductor.core.exception.ApplicationException.Code.NOT_FOUND; +import static org.hamcrest.Matchers.hasProperty; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class PostgresMetadataDAOTest { diff --git a/postgres-persistence/src/test/java/com/netflix/conductor/postgres/dao/PostgresQueueDAOTest.java b/postgres-persistence/src/test/java/com/netflix/conductor/postgres/dao/PostgresQueueDAOTest.java index 3547163ea8..a4daca434b 100644 --- a/postgres-persistence/src/test/java/com/netflix/conductor/postgres/dao/PostgresQueueDAOTest.java +++ b/postgres-persistence/src/test/java/com/netflix/conductor/postgres/dao/PostgresQueueDAOTest.java @@ -1,35 +1,23 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.postgres.dao; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.ImmutableList; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.core.events.queue.Message; import com.netflix.conductor.postgres.util.PostgresDAOTestUtil; import com.netflix.conductor.postgres.util.Query; -import java.sql.Connection; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -45,7 +33,20 @@ import org.testcontainers.containers.PostgreSQLContainer; import org.testcontainers.utility.DockerImageName; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class PostgresQueueDAOTest { diff --git a/redis-persistence/build.gradle b/redis-persistence/build.gradle index b9554565bb..d74de0a335 100644 --- a/redis-persistence/build.gradle +++ b/redis-persistence/build.gradle @@ -1,3 +1,16 @@ +/* + * Copyright 2021 Netflix, Inc. + *

+ * 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. + */ + dependencies { implementation project(':conductor-common') implementation project(':conductor-core') @@ -10,4 +23,5 @@ dependencies { implementation "org.rarefiedredis.redis:redis-java:${revRarefiedRedis}" testImplementation project(':conductor-core').sourceSets.test.output + testImplementation project(':conductor-common').sourceSets.test.output } diff --git a/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisEventHandlerDAOTest.java b/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisEventHandlerDAOTest.java index f720f7d93d..6dad45a7b9 100644 --- a/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisEventHandlerDAOTest.java +++ b/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisEventHandlerDAOTest.java @@ -1,23 +1,19 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.redis.dao; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.mockito.Mockito.mock; - import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.events.EventHandler; import com.netflix.conductor.common.metadata.events.EventHandler.Action; import com.netflix.conductor.common.metadata.events.EventHandler.Action.Type; @@ -26,8 +22,6 @@ import com.netflix.conductor.redis.config.RedisProperties; import com.netflix.conductor.redis.jedis.JedisMock; import com.netflix.conductor.redis.jedis.JedisProxy; -import java.util.List; -import java.util.UUID; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -36,7 +30,14 @@ import org.springframework.test.context.junit4.SpringRunner; import redis.clients.jedis.commands.JedisCommands; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +import java.util.List; +import java.util.UUID; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.mock; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class RedisEventHandlerDAOTest { diff --git a/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisExecutionDAOTest.java b/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisExecutionDAOTest.java index 2f1271a2f3..99179fe2e8 100644 --- a/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisExecutionDAOTest.java +++ b/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisExecutionDAOTest.java @@ -1,29 +1,28 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.redis.dao; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.metadata.tasks.Task.Status; import com.netflix.conductor.common.metadata.tasks.TaskDef; import com.netflix.conductor.core.config.ConductorProperties; import com.netflix.conductor.dao.ExecutionDAO; import com.netflix.conductor.dao.ExecutionDAOTest; -import com.netflix.conductor.redis.jedis.JedisProxy; import com.netflix.conductor.redis.config.RedisProperties; import com.netflix.conductor.redis.jedis.JedisMock; -import java.time.Duration; +import com.netflix.conductor.redis.jedis.JedisProxy; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -32,6 +31,7 @@ import org.springframework.test.context.junit4.SpringRunner; import redis.clients.jedis.commands.JedisCommands; +import java.time.Duration; import java.util.Collections; import java.util.List; @@ -40,7 +40,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class RedisExecutionDAOTest extends ExecutionDAOTest { diff --git a/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisMetadataDAOTest.java b/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisMetadataDAOTest.java index d6130cb453..96f859e218 100644 --- a/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisMetadataDAOTest.java +++ b/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisMetadataDAOTest.java @@ -1,29 +1,28 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.redis.dao; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.TaskDef; import com.netflix.conductor.common.metadata.tasks.TaskDef.RetryLogic; import com.netflix.conductor.common.metadata.tasks.TaskDef.TimeoutPolicy; import com.netflix.conductor.common.metadata.workflow.WorkflowDef; import com.netflix.conductor.core.config.ConductorProperties; import com.netflix.conductor.core.exception.ApplicationException; -import com.netflix.conductor.redis.jedis.JedisProxy; import com.netflix.conductor.redis.config.RedisProperties; import com.netflix.conductor.redis.jedis.JedisMock; -import java.time.Duration; +import com.netflix.conductor.redis.jedis.JedisProxy; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -32,6 +31,7 @@ import org.springframework.test.context.junit4.SpringRunner; import redis.clients.jedis.commands.JedisCommands; +import java.time.Duration; import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -45,7 +45,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class RedisMetadataDAOTest { diff --git a/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisPollDataDAOTest.java b/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisPollDataDAOTest.java index 553d7a62b7..10256ed03e 100644 --- a/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisPollDataDAOTest.java +++ b/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisPollDataDAOTest.java @@ -1,21 +1,19 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.redis.dao; -import static org.mockito.Mockito.mock; - import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.core.config.ConductorProperties; import com.netflix.conductor.dao.PollDataDAO; import com.netflix.conductor.dao.PollDataDAOTest; @@ -29,7 +27,9 @@ import org.springframework.test.context.junit4.SpringRunner; import redis.clients.jedis.commands.JedisCommands; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +import static org.mockito.Mockito.mock; + +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class RedisPollDataDAOTest extends PollDataDAOTest { diff --git a/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisRateLimitDAOTest.java b/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisRateLimitDAOTest.java index 40c55db7d6..503362aa97 100644 --- a/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisRateLimitDAOTest.java +++ b/redis-persistence/src/test/java/com/netflix/conductor/redis/dao/RedisRateLimitDAOTest.java @@ -1,25 +1,25 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.redis.dao; import com.fasterxml.jackson.databind.ObjectMapper; -import com.netflix.conductor.common.config.ObjectMapperConfiguration; +import com.netflix.conductor.common.config.TestObjectMapperConfiguration; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.metadata.tasks.TaskDef; import com.netflix.conductor.core.config.ConductorProperties; -import com.netflix.conductor.redis.jedis.JedisProxy; import com.netflix.conductor.redis.config.RedisProperties; import com.netflix.conductor.redis.jedis.JedisMock; +import com.netflix.conductor.redis.jedis.JedisProxy; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -34,7 +34,7 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +@ContextConfiguration(classes = {TestObjectMapperConfiguration.class}) @RunWith(SpringRunner.class) public class RedisRateLimitDAOTest { diff --git a/rest/src/main/java/com/netflix/conductor/rest/startup/KitchenSinkInitializer.java b/rest/src/main/java/com/netflix/conductor/rest/startup/KitchenSinkInitializer.java index 52bdf1749d..7fa8e7dea8 100644 --- a/rest/src/main/java/com/netflix/conductor/rest/startup/KitchenSinkInitializer.java +++ b/rest/src/main/java/com/netflix/conductor/rest/startup/KitchenSinkInitializer.java @@ -1,21 +1,17 @@ -/** - * Copyright 2020 Netflix, Inc. - * - * 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. +/* + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ package com.netflix.conductor.rest.startup; -import com.netflix.conductor.common.config.ObjectMapperProvider; import com.netflix.conductor.common.metadata.tasks.TaskDef; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,7 +21,6 @@ import org.springframework.context.event.EventListener; import org.springframework.core.io.Resource; import org.springframework.http.HttpEntity; -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.stereotype.Component; import org.springframework.util.FileCopyUtils; import org.springframework.util.LinkedMultiValueMap; @@ -68,9 +63,7 @@ public class KitchenSinkInitializer { private Resource ephemeralWorkflowWithEphemeralTasks; public KitchenSinkInitializer(RestTemplateBuilder restTemplateBuilder) { - MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter(); - messageConverter.setObjectMapper(new ObjectMapperProvider().getObjectMapper()); - this.restTemplate = restTemplateBuilder.additionalMessageConverters(messageConverter).build(); + this.restTemplate = restTemplateBuilder.build(); } @EventListener(ApplicationReadyEvent.class) diff --git a/server/build.gradle b/server/build.gradle index 72af2840de..24b11f67af 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -1,3 +1,16 @@ +/* + * Copyright 2021 Netflix, Inc. + *

+ * 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. + */ + plugins { id 'application' id 'org.springframework.boot' @@ -27,6 +40,13 @@ dependencies { implementation "org.springdoc:springdoc-openapi-ui:${revOpenapi}" runtimeOnly 'com.netflix.spectator:spectator-reg-micrometer' + + testImplementation project(':conductor-rest') + testImplementation project(':conductor-common') + testImplementation "io.grpc:grpc-testing:${revGrpc}" + testImplementation "com.google.protobuf:protobuf-java:${revProtoBuf}" + testImplementation "io.grpc:grpc-protobuf:${revGrpc}" + testImplementation "io.grpc:grpc-stub:${revGrpc}" } jar { diff --git a/common/src/test/java/com/netflix/conductor/common/config/ObjectMapperTest.java b/server/src/test/java/com/netflix/conductor/common/config/ConductorObjectMapperTest.java similarity index 71% rename from common/src/test/java/com/netflix/conductor/common/config/ObjectMapperTest.java rename to server/src/test/java/com/netflix/conductor/common/config/ConductorObjectMapperTest.java index 9a29190752..c64ce698c1 100644 --- a/common/src/test/java/com/netflix/conductor/common/config/ObjectMapperTest.java +++ b/server/src/test/java/com/netflix/conductor/common/config/ConductorObjectMapperTest.java @@ -1,15 +1,16 @@ /* - * Copyright 2020 Netflix, Inc. - *

- * 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. + * Copyright 2021 Netflix, Inc. + *

+ * 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. */ + package com.netflix.conductor.common.config; import com.fasterxml.jackson.core.JsonProcessingException; @@ -22,7 +23,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.io.IOException; @@ -35,9 +36,13 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -@ContextConfiguration(classes = {ObjectMapperConfiguration.class}) +/** + * Tests the customized {@link ObjectMapper} that is used by + * {@link com.netflix.conductor.Conductor} application. + */ +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) @RunWith(SpringRunner.class) -public class ObjectMapperTest { +public class ConductorObjectMapperTest { @Autowired ObjectMapper objectMapper; @@ -47,7 +52,7 @@ public void testSimpleMapping() throws IOException { assertTrue(objectMapper.canSerialize(Any.class)); Struct struct1 = Struct.newBuilder().putFields( - "some-key", Value.newBuilder().setStringValue("some-value").build() + "some-key", Value.newBuilder().setStringValue("some-value").build() ).build(); Any source = Any.pack(struct1); @@ -61,8 +66,8 @@ public void testSimpleMapping() throws IOException { Struct struct2 = dest.unpack(Struct.class); assertTrue(struct2.containsFields("some-key")); assertEquals( - struct1.getFieldsOrThrow("some-key").getStringValue(), - struct2.getFieldsOrThrow("some-key").getStringValue() + struct1.getFieldsOrThrow("some-key").getStringValue(), + struct2.getFieldsOrThrow("some-key").getStringValue() ); }