This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git
commit eb79f26d9534ad9228cfd8979dc3cce30ec8d854 Author: seanyinx <[email protected]> AuthorDate: Tue Dec 26 18:37:52 2017 +0800 SCB-97 glued request interception with transaction aop Signed-off-by: seanyinx <[email protected]> --- integration-tests/pack-tests/pom.xml | 10 +++++++--- .../integration/pack/tests/GreetingController.java | 12 +----------- .../saga/integration/pack/tests/PackIT.java | 18 ++++++++++++++++-- .../servicecomb/saga/omega/context/OmegaContext.java | 20 ++++++++++++++++++++ .../saga/omega/context}/UniqueIdGenerator.java | 5 +---- .../saga/omega/context/OmegaContextTest.java | 2 +- omega/omega-spring-starter/pom.xml | 4 ---- .../saga/omega/spring/OmegaSpringConfig.java | 13 +++++++++++++ .../transaction/spring/TransactionAspectConfig.java | 4 ---- .../spring/TransactionInterceptionTest.java | 6 ++++++ .../transport/resttemplate/RestTemplateConfig.java | 10 ++-------- .../TransactionClientHttpRequestInterceptor.java | 19 +++++++------------ .../resttemplate/TransactionHandlerInterceptor.java | 18 +++++++----------- .../src/main/resources/META-INF/spring.factories | 19 +++++++++++++++++++ .../TransactionClientHttpRequestInterceptorTest.java | 10 +++++----- .../TransactionHandlerInterceptorTest.java | 8 +++++--- .../resttemplate/UniqueIdGeneratorTest.java | 2 ++ 17 files changed, 112 insertions(+), 68 deletions(-) diff --git a/integration-tests/pack-tests/pom.xml b/integration-tests/pack-tests/pom.xml index bc7717c..41a40d8 100644 --- a/integration-tests/pack-tests/pom.xml +++ b/integration-tests/pack-tests/pom.xml @@ -46,6 +46,10 @@ <artifactId>omega-spring-starter</artifactId> </dependency> <dependency> + <groupId>io.servicecomb.saga</groupId> + <artifactId>omega-transport-resttemplate</artifactId> + </dependency> + <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> @@ -193,9 +197,9 @@ <version>${maven.failsafe.version}</version> <configuration> <systemPropertyVariables> - <saga.address> - http://${docker.hostname}:${alpha.port} - </saga.address> + <alpha.cluster.address> + ${docker.hostname}:${alpha.port} + </alpha.cluster.address> </systemPropertyVariables> <argLine>${jacoco.failsafe.argLine}</argLine> </configuration> diff --git a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingController.java b/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingController.java index 11aa0e8..1a6d489 100644 --- a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingController.java +++ b/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/GreetingController.java @@ -17,8 +17,6 @@ package io.servicecomb.saga.integration.pack.tests; -import java.util.UUID; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; @@ -26,27 +24,19 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import io.servicecomb.saga.omega.context.OmegaContext; - @Controller @RequestMapping("/") public class GreetingController { private final GreetingService greetingService; - private final OmegaContext context; @Autowired - public GreetingController(GreetingService greetingService, OmegaContext context) { + public GreetingController(GreetingService greetingService) { this.greetingService = greetingService; - this.context = context; } @GetMapping("/greet") ResponseEntity<String> greet(@RequestParam String name) { - // TODO: 2017/12/26 to be removed when tx id retrieval is done - context.setGlobalTxId(UUID.randomUUID().toString()); - context.setLocalTxId(UUID.randomUUID().toString()); - return ResponseEntity.ok(greetingService.greet(name)); } } diff --git a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/PackIT.java b/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/PackIT.java index ad6bed1..3c1d0eb 100644 --- a/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/PackIT.java +++ b/integration-tests/pack-tests/src/test/java/io/servicecomb/saga/integration/pack/tests/PackIT.java @@ -17,23 +17,29 @@ package io.servicecomb.saga.integration.pack.tests; +import static io.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; +import static org.springframework.http.HttpMethod.GET; import static org.springframework.http.HttpStatus.OK; +import java.util.UUID; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringRunner; import io.servicecomb.saga.omega.context.OmegaContext; @RunWith(SpringRunner.class) -@SpringBootTest(classes = GreetingApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT, properties = {"alpha.cluster.address=localhost:32782"}) +@SpringBootTest(classes = GreetingApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT) public class PackIT { @Autowired private TestRestTemplate restTemplate; @@ -44,7 +50,15 @@ public class PackIT { @Test public void updatesTxStateToAlpha() throws Exception { - ResponseEntity<String> entity = restTemplate.getForEntity("/greet?name={name}", String.class, "mike"); + HttpHeaders headers = new HttpHeaders(); + + headers.set(GLOBAL_TX_ID_KEY, UUID.randomUUID().toString()); + + ResponseEntity<String> entity = restTemplate.exchange("/greet?name={name}", + GET, + new HttpEntity<>(headers), + String.class, + "mike"); assertThat(entity.getStatusCode(), is(OK)); assertThat(entity.getBody(), is("Greetings, mike")); diff --git a/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/OmegaContext.java b/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/OmegaContext.java index 17c6246..d8cca65 100644 --- a/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/OmegaContext.java +++ b/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/OmegaContext.java @@ -23,10 +23,24 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class OmegaContext { + public static final String GLOBAL_TX_ID_KEY = "X-Pack-Global-Transaction-Id"; + public static final String LOCAL_TX_ID_KEY = "X-Pack-Local-Transaction-Id"; + private final ThreadLocal<String> globalTxId = new ThreadLocal<>(); private final ThreadLocal<String> localTxId = new ThreadLocal<>(); private final ThreadLocal<String> parentTxId = new ThreadLocal<>(); private final Map<String, CompensationContext> compensationContexts = new ConcurrentHashMap<>(); + private final IdGenerator<String> idGenerator; + + public OmegaContext(IdGenerator<String> idGenerator) { + this.idGenerator = idGenerator; + } + + public String newGlobalTxId() { + String id = idGenerator.nextId(); + globalTxId.set(id); + return id; + } public void setGlobalTxId(String txId) { globalTxId.set(txId); @@ -36,6 +50,12 @@ public class OmegaContext { return globalTxId.get(); } + public String newLocalTxId() { + String id = idGenerator.nextId(); + localTxId.set(id); + return id; + } + public void setLocalTxId(String localTxId) { this.localTxId.set(localTxId); } diff --git a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/UniqueIdGenerator.java b/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/UniqueIdGenerator.java similarity index 89% rename from omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/UniqueIdGenerator.java rename to omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/UniqueIdGenerator.java index 8cb3eb1..300b522 100644 --- a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/UniqueIdGenerator.java +++ b/omega/omega-context/src/main/java/io/servicecomb/saga/omega/context/UniqueIdGenerator.java @@ -13,15 +13,12 @@ * 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 io.servicecomb.saga.omega.transport.resttemplate; +package io.servicecomb.saga.omega.context; import java.util.UUID; -import io.servicecomb.saga.omega.context.IdGenerator; - public class UniqueIdGenerator implements IdGenerator<String> { @Override public String nextId() { diff --git a/omega/omega-context/src/test/java/io/servicecomb/saga/omega/context/OmegaContextTest.java b/omega/omega-context/src/test/java/io/servicecomb/saga/omega/context/OmegaContextTest.java index e890c18..752f0b8 100644 --- a/omega/omega-context/src/test/java/io/servicecomb/saga/omega/context/OmegaContextTest.java +++ b/omega/omega-context/src/test/java/io/servicecomb/saga/omega/context/OmegaContextTest.java @@ -29,7 +29,7 @@ import org.junit.Test; public class OmegaContextTest { - private final OmegaContext omegaContext = new OmegaContext(); + private final OmegaContext omegaContext = new OmegaContext(() -> "ignored"); @Test public void eachThreadGetsDifferentGlobalTxId() throws Exception { diff --git a/omega/omega-spring-starter/pom.xml b/omega/omega-spring-starter/pom.xml index b900a47..59b81f8 100644 --- a/omega/omega-spring-starter/pom.xml +++ b/omega/omega-spring-starter/pom.xml @@ -31,10 +31,6 @@ <dependencies> <dependency> <groupId>io.servicecomb.saga</groupId> - <artifactId>omega-transport-resttemplate</artifactId> - </dependency> - <dependency> - <groupId>io.servicecomb.saga</groupId> <artifactId>omega-spring-tx</artifactId> </dependency> <dependency> diff --git a/omega/omega-spring-starter/src/main/java/io/servicecomb/saga/omega/spring/OmegaSpringConfig.java b/omega/omega-spring-starter/src/main/java/io/servicecomb/saga/omega/spring/OmegaSpringConfig.java index ae92123..33a0cbc 100644 --- a/omega/omega-spring-starter/src/main/java/io/servicecomb/saga/omega/spring/OmegaSpringConfig.java +++ b/omega/omega-spring-starter/src/main/java/io/servicecomb/saga/omega/spring/OmegaSpringConfig.java @@ -27,6 +27,9 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import io.servicecomb.saga.omega.connector.thrift.ThriftMessageSender; +import io.servicecomb.saga.omega.context.IdGenerator; +import io.servicecomb.saga.omega.context.OmegaContext; +import io.servicecomb.saga.omega.context.UniqueIdGenerator; import io.servicecomb.saga.omega.format.NativeMessageFormat; import io.servicecomb.saga.omega.transaction.MessageSender; @@ -35,6 +38,16 @@ class OmegaSpringConfig { private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @Bean + IdGenerator<String> idGenerator() { + return new UniqueIdGenerator(); + } + + @Bean + OmegaContext omegaContext(IdGenerator<String> idGenerator) { + return new OmegaContext(idGenerator); + } + + @Bean MessageSender messageSender(@Value("${alpha.cluster.address}") String[] addresses) { // TODO: 2017/12/26 connect to the one with lowest latency for (String address : addresses) { diff --git a/omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/TransactionAspectConfig.java b/omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/TransactionAspectConfig.java index 59f7d2e..358ef26 100644 --- a/omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/TransactionAspectConfig.java +++ b/omega/omega-spring-tx/src/main/java/io/servicecomb/saga/omega/transaction/spring/TransactionAspectConfig.java @@ -28,10 +28,6 @@ import io.servicecomb.saga.omega.transaction.TransactionAspect; @Configuration @EnableAspectJAutoProxy public class TransactionAspectConfig { - @Bean - OmegaContext omegaContext() { - return new OmegaContext(); - } @Bean TransactionAspect transactionAspect(MessageSender sender, OmegaContext context) { diff --git a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java b/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java index 5aefb68..67fdff9 100644 --- a/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java +++ b/omega/omega-spring-tx/src/test/java/io/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java @@ -41,6 +41,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.test.context.junit4.SpringRunner; import io.servicecomb.saga.omega.context.OmegaContext; +import io.servicecomb.saga.omega.context.UniqueIdGenerator; import io.servicecomb.saga.omega.transaction.MessageHandler; import io.servicecomb.saga.omega.transaction.MessageSender; import io.servicecomb.saga.omega.transaction.TxEvent; @@ -123,6 +124,11 @@ public class TransactionInterceptionTest { private final List<byte[]> messages = new ArrayList<>(); @Bean + OmegaContext omegaContext() { + return new OmegaContext(new UniqueIdGenerator()); + } + + @Bean List<byte[]> messages() { return messages; } diff --git a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java b/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java index 34683b1..053e3ff 100644 --- a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java +++ b/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/RestTemplateConfig.java @@ -25,22 +25,16 @@ import org.springframework.context.annotation.Configuration; import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.web.client.RestTemplate; -import io.servicecomb.saga.omega.context.IdGenerator; import io.servicecomb.saga.omega.context.OmegaContext; @Configuration public class RestTemplateConfig { @Bean - IdGenerator<String> idGenerator() { - return new UniqueIdGenerator(); - } - - @Bean - public RestTemplate restTemplate(IdGenerator<String> idGenerator, OmegaContext context) { + public RestTemplate restTemplate(OmegaContext context) { RestTemplate template = new RestTemplate(); List<ClientHttpRequestInterceptor> interceptors = template.getInterceptors(); - interceptors.add(new TransactionClientHttpRequestInterceptor(context, idGenerator)); + interceptors.add(new TransactionClientHttpRequestInterceptor(context)); template.setInterceptors(interceptors); return template; } diff --git a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java b/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java index 158fbc8..35bc9d0 100644 --- a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java +++ b/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java @@ -18,6 +18,9 @@ package io.servicecomb.saga.omega.transport.resttemplate; +import static io.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY; +import static io.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID_KEY; + import java.io.IOException; import org.springframework.http.HttpRequest; @@ -25,20 +28,14 @@ import org.springframework.http.client.ClientHttpRequestExecution; import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.http.client.ClientHttpResponse; -import io.servicecomb.saga.omega.context.IdGenerator; import io.servicecomb.saga.omega.context.OmegaContext; -public class TransactionClientHttpRequestInterceptor implements ClientHttpRequestInterceptor { - - public static final String GLOBAL_TX_ID_KEY = "X-Pack-Global-Transaction-Id"; - public static final String LOCAL_TX_ID_KEY = "X-Pack-Local-Transaction-Id"; +class TransactionClientHttpRequestInterceptor implements ClientHttpRequestInterceptor { private final OmegaContext omegaContext; - private final IdGenerator<String> idGenerator; - TransactionClientHttpRequestInterceptor(OmegaContext omegaContext, IdGenerator<String> idGenerator) { + TransactionClientHttpRequestInterceptor(OmegaContext omegaContext) { this.omegaContext = omegaContext; - this.idGenerator = idGenerator; } @Override @@ -54,8 +51,7 @@ public class TransactionClientHttpRequestInterceptor implements ClientHttpReques String globalTxId = omegaContext.globalTxId(); if (globalTxId == null) { - globalTxId = idGenerator.nextId(); - omegaContext.setGlobalTxId(globalTxId); + return omegaContext.newGlobalTxId(); } return globalTxId; } @@ -64,8 +60,7 @@ public class TransactionClientHttpRequestInterceptor implements ClientHttpReques String localTxId = omegaContext.localTxId(); if (localTxId == null) { - localTxId = idGenerator.nextId(); - omegaContext.setLocalTxId(localTxId); + return omegaContext.newLocalTxId(); } return localTxId; } diff --git a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java b/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java index 6363e4f..d71c558 100644 --- a/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java +++ b/omega/omega-transport/omega-transport-resttemplate/src/main/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptor.java @@ -20,8 +20,8 @@ package io.servicecomb.saga.omega.transport.resttemplate; -import static io.servicecomb.saga.omega.transport.resttemplate.TransactionClientHttpRequestInterceptor.GLOBAL_TX_ID_KEY; -import static io.servicecomb.saga.omega.transport.resttemplate.TransactionClientHttpRequestInterceptor.LOCAL_TX_ID_KEY; +import static io.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY; +import static io.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID_KEY; import java.lang.invoke.MethodHandles; @@ -35,13 +35,13 @@ import org.springframework.web.servlet.ModelAndView; import io.servicecomb.saga.omega.context.OmegaContext; -public class TransactionHandlerInterceptor implements HandlerInterceptor { +class TransactionHandlerInterceptor implements HandlerInterceptor { private static Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); private final OmegaContext omegaContext; - public TransactionHandlerInterceptor(OmegaContext omegaContext) { + TransactionHandlerInterceptor(OmegaContext omegaContext) { this.omegaContext = omegaContext; } @@ -49,15 +49,11 @@ public class TransactionHandlerInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { String globalTxId = request.getHeader(GLOBAL_TX_ID_KEY); if (globalTxId == null) { - LOG.info("no such header: {}", GLOBAL_TX_ID_KEY); + LOG.debug("no such header: {}", GLOBAL_TX_ID_KEY); } else { omegaContext.setGlobalTxId(globalTxId); - } - String parentTxId = request.getHeader(LOCAL_TX_ID_KEY); - if (parentTxId == null) { - LOG.info("no such header: {}", LOCAL_TX_ID_KEY); - } else { - omegaContext.setParentTxId(parentTxId); + omegaContext.newLocalTxId(); + omegaContext.setParentTxId(request.getHeader(LOCAL_TX_ID_KEY)); } return true; } diff --git a/omega/omega-transport/omega-transport-resttemplate/src/main/resources/META-INF/spring.factories b/omega/omega-transport/omega-transport-resttemplate/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..7d03c78 --- /dev/null +++ b/omega/omega-transport/omega-transport-resttemplate/src/main/resources/META-INF/spring.factories @@ -0,0 +1,19 @@ +## --------------------------------------------------------------------------- +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## --------------------------------------------------------------------------- +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + io.servicecomb.saga.omega.transport.resttemplate.WebConfig,\ + io.servicecomb.saga.omega.transport.resttemplate.RestTemplateConfig diff --git a/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptorTest.java b/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptorTest.java index 41da9ec..223b56c 100644 --- a/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptorTest.java +++ b/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionClientHttpRequestInterceptorTest.java @@ -19,8 +19,8 @@ package io.servicecomb.saga.omega.transport.resttemplate; import static com.seanyinx.github.unit.scaffolding.Randomness.uniquify; -import static io.servicecomb.saga.omega.transport.resttemplate.TransactionClientHttpRequestInterceptor.GLOBAL_TX_ID_KEY; -import static io.servicecomb.saga.omega.transport.resttemplate.TransactionClientHttpRequestInterceptor.LOCAL_TX_ID_KEY; +import static io.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY; +import static io.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID_KEY; import static org.hamcrest.Matchers.contains; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; @@ -57,10 +57,10 @@ public class TransactionClientHttpRequestInterceptorTest { private final String localTxId = uniquify("local tx id"); private final IdGenerator<String> idGenerator = Mockito.mock(IdGenerator.class); - private final OmegaContext omegaContext = new OmegaContext(); + private final OmegaContext omegaContext = new OmegaContext(idGenerator); private final ClientHttpRequestInterceptor clientHttpRequestInterceptor = new TransactionClientHttpRequestInterceptor( - omegaContext, - idGenerator); + omegaContext + ); @Before public void setUp() throws Exception { diff --git a/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptorTest.java b/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptorTest.java index a6c29cb..4aabddd 100644 --- a/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptorTest.java +++ b/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/TransactionHandlerInterceptorTest.java @@ -18,9 +18,10 @@ package io.servicecomb.saga.omega.transport.resttemplate; -import static io.servicecomb.saga.omega.transport.resttemplate.TransactionClientHttpRequestInterceptor.GLOBAL_TX_ID_KEY; -import static io.servicecomb.saga.omega.transport.resttemplate.TransactionClientHttpRequestInterceptor.LOCAL_TX_ID_KEY; +import static io.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY; +import static io.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID_KEY; import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; @@ -43,7 +44,7 @@ public class TransactionHandlerInterceptorTest { private static final String localTxId = UUID.randomUUID().toString(); - private final OmegaContext omegaContext = new OmegaContext(); + private final OmegaContext omegaContext = new OmegaContext(() -> "ignored"); private HandlerInterceptor requestInterceptor = new TransactionHandlerInterceptor(omegaContext); @@ -66,6 +67,7 @@ public class TransactionHandlerInterceptorTest { requestInterceptor.preHandle(request, response, null); assertThat(omegaContext.globalTxId(), is(globalTxId)); + assertThat(omegaContext.localTxId(), is(notNullValue())); assertThat(omegaContext.parentTxId(), is(localTxId)); } diff --git a/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/UniqueIdGeneratorTest.java b/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/UniqueIdGeneratorTest.java index 87338ea..720eb0b 100644 --- a/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/UniqueIdGeneratorTest.java +++ b/omega/omega-transport/omega-transport-resttemplate/src/test/java/io/servicecomb/saga/omega/transport/resttemplate/UniqueIdGeneratorTest.java @@ -34,6 +34,8 @@ import java.util.concurrent.Future; import org.junit.Test; +import io.servicecomb.saga.omega.context.UniqueIdGenerator; + public class UniqueIdGeneratorTest { private final UniqueIdGenerator idGenerator = new UniqueIdGenerator(); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
