org.springframework.boot.test.json.JsonContent#de.codecentric.boot.admin.server.domain.values.Registration源码实例Demo

下面列出了org.springframework.boot.test.json.JsonContent#de.codecentric.boot.admin.server.domain.values.Registration 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。


@Test
public void test_filterByName() {
	NotificationFilter filter = new ApplicationNameNotificationFilter("foo", null);

	Instance filteredInstance = Instance.create(InstanceId.of("-"))
			.register(Registration.create("foo", "http://health").build());
	InstanceRegisteredEvent filteredEvent = new InstanceRegisteredEvent(filteredInstance.getId(),
			filteredInstance.getVersion(), filteredInstance.getRegistration());
	assertThat(filter.filter(filteredEvent, filteredInstance)).isTrue();

	Instance ignoredInstance = Instance.create(InstanceId.of("-"))
			.register(Registration.create("bar", "http://health").build());
	InstanceRegisteredEvent ignoredEvent = new InstanceRegisteredEvent(ignoredInstance.getId(),
			ignoredInstance.getVersion(), ignoredInstance.getRegistration());
	assertThat(filter.filter(ignoredEvent, ignoredInstance)).isFalse();
}
 
源代码2 项目: Moss   文件: QueryIndexEndpointStrategy.java

@Override
public Mono<Endpoints> detectEndpoints(Instance instance) {
    Registration registration = instance.getRegistration();
    String managementUrl = registration.getManagementUrl();
    if (managementUrl == null || Objects.equals(registration.getServiceUrl(), managementUrl)) {
        return Mono.empty();
    }

    return instanceWebClient.instance(instance)
                            .get()
                            .uri(managementUrl)
                            .exchange()
                            .flatMap(response -> {
                                if (response.statusCode().is2xxSuccessful() &&
                                    response.headers()
                                            .contentType()
                                            .map(actuatorMediaType::isCompatibleWith)
                                            .orElse(false)) {
                                    return response.bodyToMono(Response.class);
                                } else {
                                    return response.bodyToMono(Void.class).then(Mono.empty());
                                }
                            })
                            .flatMap(this::convert);
}
 

@Test
public void should_clear_info_on_exception() {
	this.updater = new InfoUpdater(this.repository, InstanceWebClient.builder().build());

	// given
	Instance instance = Instance.create(InstanceId.of("onl"))
			.register(Registration.create("foo", this.wireMock.url("/health")).build())
			.withEndpoints(Endpoints.single("info", this.wireMock.url("/info"))).withStatusInfo(StatusInfo.ofUp())
			.withInfo(Info.from(singletonMap("foo", "bar")));
	StepVerifier.create(this.repository.save(instance)).expectNextCount(1).verifyComplete();

	this.wireMock.stubFor(get("/info").willReturn(okJson("{ \"foo\": \"bar\" }").withFixedDelay(1500)));

	// when
	StepVerifier.create(this.eventStore).expectSubscription()
			.then(() -> StepVerifier.create(this.updater.updateInfo(instance.getId())).verifyComplete())
			// then
			.assertNext((event) -> assertThat(event).isInstanceOf(InstanceInfoChangedEvent.class)).thenCancel()
			.verify();

	StepVerifier.create(this.repository.find(instance.getId()))
			.assertNext((app) -> assertThat(app.getInfo()).isEqualTo(Info.empty())).verifyComplete();
}
 

@Test
public void test_filterByName() {
	NotificationFilter filter = new InstanceIdNotificationFilter(InstanceId.of("cafebabe"), null);

	Instance filteredInstance = Instance.create(InstanceId.of("cafebabe"))
			.register(Registration.create("foo", "http://health").build());
	InstanceRegisteredEvent filteredEvent = new InstanceRegisteredEvent(filteredInstance.getId(),
			filteredInstance.getVersion(), filteredInstance.getRegistration());
	assertThat(filter.filter(filteredEvent, filteredInstance)).isTrue();

	Instance ignoredInstance = Instance.create(InstanceId.of("-"))
			.register(Registration.create("foo", "http://health").build());
	InstanceRegisteredEvent ignoredEvent = new InstanceRegisteredEvent(ignoredInstance.getId(),
			ignoredInstance.getVersion(), ignoredInstance.getRegistration());
	assertThat(filter.filter(ignoredEvent, ignoredInstance)).isFalse();
}
 

@Test
public void should_return_empty_on_empty_endpoints() {
	// given
	Instance instance = Instance.create(InstanceId.of("id")).register(Registration
			.create("test", this.wireMock.url("/mgmt/health")).managementUrl(this.wireMock.url("/mgmt")).build());

	String body = "{\"_links\":{}}";
	this.wireMock
			.stubFor(get("/mgmt").willReturn(okJson(body).withHeader("Content-Type", ActuatorMediaType.V2_JSON)));

	QueryIndexEndpointStrategy strategy = new QueryIndexEndpointStrategy(this.instanceWebClient);

	// when
	StepVerifier.create(strategy.detectEndpoints(instance))
			// then
			.verifyComplete();
}
 

@Test
public void convert_secure() {
	InstanceInfo instanceInfo = mock(InstanceInfo.class);
	when(instanceInfo.getSecureHealthCheckUrl()).thenReturn("");
	when(instanceInfo.getHealthCheckUrl()).thenReturn("http://localhost:80/mgmt/ping");
	EurekaServiceInstance service = mock(EurekaServiceInstance.class);
	when(service.getInstanceInfo()).thenReturn(instanceInfo);
	when(service.getUri()).thenReturn(URI.create("http://localhost:80"));
	when(service.getServiceId()).thenReturn("test");
	when(service.getMetadata()).thenReturn(singletonMap("management.context-path", "/mgmt"));

	Registration registration = new EurekaServiceInstanceConverter().convert(service);

	assertThat(registration.getName()).isEqualTo("test");
	assertThat(registration.getServiceUrl()).isEqualTo("http://localhost:80");
	assertThat(registration.getManagementUrl()).isEqualTo("http://localhost:80/mgmt");
	assertThat(registration.getHealthUrl()).isEqualTo("http://localhost:80/mgmt/ping");
}
 

@Test
public void should_retry() {
	// given
	Registration registration = Registration.create("foo", this.wireMock.url("/health")).build();
	Instance instance = Instance.create(InstanceId.of("onl")).register(registration)
			.withEndpoints(Endpoints.single("info", this.wireMock.url("/info"))).withStatusInfo(StatusInfo.ofUp());
	StepVerifier.create(this.repository.save(instance)).expectNextCount(1).verifyComplete();

	this.wireMock.stubFor(get("/info").inScenario("retry").whenScenarioStateIs(STARTED)
			.willReturn(aResponse().withFixedDelay(5000)).willSetStateTo("recovered"));

	String body = "{ \"foo\": \"bar\" }";
	this.wireMock.stubFor(get("/info").inScenario("retry").whenScenarioStateIs("recovered")
			.willReturn(okJson(body).withHeader("Content-Length", Integer.toString(body.length()))));

	// when
	StepVerifier.create(this.eventStore).expectSubscription()
			.then(() -> StepVerifier.create(this.updater.updateInfo(instance.getId())).verifyComplete())
			// then
			.assertNext((event) -> assertThat(event).isInstanceOf(InstanceInfoChangedEvent.class)).thenCancel()
			.verify();

	StepVerifier.create(this.repository.find(instance.getId()))
			.assertNext((app) -> assertThat(app.getInfo()).isEqualTo(Info.from(singletonMap("foo", "bar"))))
			.verifyComplete();
}
 

@Test
public void should_return_detect_endpoints() {
	// given
	Instance instance = Instance.create(InstanceId.of("id")).register(Registration
			.create("test", this.wireMock.url("/mgmt/health")).managementUrl(this.wireMock.url("/mgmt")).build());

	this.wireMock.stubFor(options(urlEqualTo("/mgmt/metrics")).willReturn(ok()));
	this.wireMock.stubFor(options(urlEqualTo("/mgmt/stats")).willReturn(ok()));
	this.wireMock.stubFor(options(urlEqualTo("/mgmt/info")).willReturn(ok()));
	this.wireMock.stubFor(options(urlEqualTo("/mgmt/non-exist")).willReturn(notFound()));
	this.wireMock.stubFor(options(urlEqualTo("/mgmt/error")).willReturn(serverError()));
	this.wireMock.stubFor(
			options(urlEqualTo("/mgmt/exception")).willReturn(aResponse().withFault(Fault.EMPTY_RESPONSE)));

	ProbeEndpointsStrategy strategy = new ProbeEndpointsStrategy(this.instanceWebClient,
			new String[] { "metrics:stats", "metrics", "info", "non-exist", "error", "exception" });

	// when
	StepVerifier.create(strategy.detectEndpoints(instance))
			// then
			.expectNext(Endpoints.single("metrics", this.wireMock.url("/mgmt/stats")).withEndpoint("info",
					this.wireMock.url("/mgmt/info")))//
			.verifyComplete();
}
 

@Test
public void test_convert_with_metadata() {
    ServiceInstance service = new DefaultServiceInstance("test-1", "test", "localhost", 80, false);
    Map<String, String> metadata = new HashMap<>();
    metadata.put("health.path", "ping");
    metadata.put("management.context-path", "mgmt");
    metadata.put("management.port", "1234");
    metadata.put("management.address", "127.0.0.1");
    service.getMetadata().putAll(metadata);

    Registration registration = new DefaultServiceInstanceConverter().convert(service);

    assertThat(registration.getName()).isEqualTo("test");
    assertThat(registration.getServiceUrl()).isEqualTo("http://localhost:80/");
    assertThat(registration.getManagementUrl()).isEqualTo("http://127.0.0.1:1234/mgmt");
    assertThat(registration.getHealthUrl()).isEqualTo("http://127.0.0.1:1234/mgmt/ping");
    assertThat(registration.getMetadata()).isEqualTo(metadata);
}
 

@Test
public void should_return_endpoints() {
    //given
    Instance instance = Instance.create(InstanceId.of("id"))
                                .register(Registration.create("test", wireMock.url("/mgmt/health"))
                                                      .managementUrl(wireMock.url("/mgmt"))
                                                      .build());

    String body = "{\"_links\":{\"metrics-requiredMetricName\":{\"templated\":true,\"href\":\"\\/mgmt\\/metrics\\/{requiredMetricName}\"},\"self\":{\"templated\":false,\"href\":\"\\/mgmt\"},\"metrics\":{\"templated\":false,\"href\":\"\\/mgmt\\/stats\"},\"info\":{\"templated\":false,\"href\":\"\\/mgmt\\/info\"}}}";

    wireMock.stubFor(get("/mgmt").willReturn(ok(body).withHeader("Content-Type", ActuatorMediaType.V2_JSON)
                                                     .withHeader("Content-Length",
                                                         Integer.toString(body.length())
                                                     )));

    QueryIndexEndpointStrategy strategy = new QueryIndexEndpointStrategy(instanceWebClient);

    //when
    StepVerifier.create(strategy.detectEndpoints(instance))
                //then
                .expectNext(Endpoints.single("metrics", "/mgmt/stats").withEndpoint("info", "/mgmt/info"))//
                .verifyComplete();
}
 

@Test
public void should_convert_with_metadata() {
	ServiceInstance service = new DefaultServiceInstance("test-1", "test", "localhost", 80, false);
	Map<String, String> metadata = new HashMap<>();
	metadata.put("health.path", "ping");
	metadata.put("management.context-path", "mgmt");
	metadata.put("management.port", "1234");
	metadata.put("management.address", "127.0.0.1");
	service.getMetadata().putAll(metadata);

	Registration registration = new DefaultServiceInstanceConverter().convert(service);

	assertThat(registration.getName()).isEqualTo("test");
	assertThat(registration.getServiceUrl()).isEqualTo("http://localhost:80");
	assertThat(registration.getManagementUrl()).isEqualTo("http://127.0.0.1:1234/mgmt");
	assertThat(registration.getHealthUrl()).isEqualTo("http://127.0.0.1:1234/mgmt/ping");
	assertThat(registration.getMetadata()).isEqualTo(metadata);
}
 

@Test
public void refresh() {
	// Given instance is already reegistered and has status and info.
	StatusInfo status = StatusInfo.ofUp();
	Info info = Info.from(singletonMap("foo", "bar"));
	Registration registration = Registration.create("abc", "http://localhost:8080/health").build();
	InstanceId id = idGenerator.generateId(registration);
	Instance app = Instance.create(id).register(registration).withStatusInfo(status).withInfo(info);
	StepVerifier.create(repository.save(app)).expectNextCount(1).verifyComplete();

	// When instance registers second time
	InstanceId refreshId = registry.register(Registration.create("abc", "http://localhost:8080/health").build())
			.block();

	assertThat(refreshId).isEqualTo(id);
	StepVerifier.create(registry.getInstance(id)).assertNext((registered) -> {
		// Then info and status are retained
		assertThat(registered.getInfo()).isEqualTo(info);
		assertThat(registered.getStatusInfo()).isEqualTo(status);
	}).verifyComplete();
}
 
源代码13 项目: Moss   文件: ProbeEndpointsStrategyTest.java

@Test
public void should_return_detect_endpoints() {
    //given
    Instance instance = Instance.create(InstanceId.of("id"))
                                .register(Registration.create("test", wireMock.url("/mgmt/health"))
                                                      .managementUrl(wireMock.url("/mgmt"))
                                                      .build());

    wireMock.stubFor(options(urlEqualTo("/mgmt/metrics")).willReturn(ok()));
    wireMock.stubFor(options(urlEqualTo("/mgmt/stats")).willReturn(ok()));
    wireMock.stubFor(options(urlEqualTo("/mgmt/info")).willReturn(ok()));
    wireMock.stubFor(options(urlEqualTo("/mgmt/non-exist")).willReturn(notFound()));

    ProbeEndpointsStrategy strategy = new ProbeEndpointsStrategy(instanceWebClient,
        new String[]{"metrics:stats", "metrics", "info", "non-exist"}
    );

    //when
    StepVerifier.create(strategy.detectEndpoints(instance))
                //then
                .expectNext(Endpoints.single("metrics", wireMock.url("/mgmt/stats"))
                                     .withEndpoint("info", wireMock.url("/mgmt/info")))//
                .verifyComplete();
}
 

@Test
public void should_register_instance_when_new_service_instance_is_discovered() {
    when(discovery.getServices()).thenReturn(singletonList("service"));
    when(discovery.getInstances("service")).thenReturn(singletonList(new DefaultServiceInstance("test-1", "service",
        "localhost",
        80,
        false
    )));

    listener.onInstanceRegistered(new InstanceRegisteredEvent<>(new Object(), null));

    StepVerifier.create(registry.getInstances()).assertNext(application -> {
        Registration registration = application.getRegistration();
        assertThat(registration.getHealthUrl()).isEqualTo("http://localhost:80/actuator/health");
        assertThat(registration.getManagementUrl()).isEqualTo("http://localhost:80/actuator");
        assertThat(registration.getServiceUrl()).isEqualTo("http://localhost:80/");
        assertThat(registration.getName()).isEqualTo("service");
    }).verifyComplete();


}
 
源代码15 项目: Moss   文件: InstanceRegistryTest.java

@Test
public void refresh() {
    // Given instance is already reegistered and has status and info.
    StatusInfo status = StatusInfo.ofUp();
    Info info = Info.from(singletonMap("foo", "bar"));
    Registration registration = Registration.create("abc", "http://localhost:8080/health").build();
    InstanceId id = idGenerator.generateId(registration);
    Instance app = Instance.create(id).register(registration).withStatusInfo(status).withInfo(info);
    StepVerifier.create(repository.save(app)).expectNextCount(1).verifyComplete();

    // When instance registers second time
    InstanceId refreshId = registry.register(Registration.create("abc", "http://localhost:8080/health").build())
                                   .block();

    assertThat(refreshId).isEqualTo(id);
    StepVerifier.create(registry.getInstance(id)).assertNext(registered -> {
        // Then info and status are retained
        assertThat(registered.getInfo()).isEqualTo(info);
        assertThat(registered.getStatusInfo()).isEqualTo(status);
    }).verifyComplete();
}
 
源代码16 项目: Moss   文件: MicrosoftTeamsNotifierTest.java

@Before
public void setUp() {
    instance = Instance.create(InstanceId.of(appId))
                       .register(Registration.create(appName, healthUrl)
                                             .managementUrl(managementUrl)
                                             .serviceUrl(serviceUrl)
                                             .build());

    repository = mock(InstanceRepository.class);
    when(repository.find(instance.getId())).thenReturn(Mono.just(instance));

    mockRestTemplate = mock(RestTemplate.class);
    notifier = new MicrosoftTeamsNotifier(repository);
    notifier.setRestTemplate(mockRestTemplate);
    notifier.setWebhookUrl(URI.create("http://example.com"));
}
 

@Test
public void should_return_endpoints() {
	// given
	Instance instance = Instance.create(InstanceId.of("id")).register(Registration
			.create("test", this.wireMock.url("/mgmt/health")).managementUrl(this.wireMock.url("/mgmt")).build());

	String host = "https://localhost:" + this.wireMock.httpsPort();
	String body = "{\"_links\":{\"metrics-requiredMetricName\":{\"templated\":true,\"href\":\"" + host
			+ "/mgmt/metrics/{requiredMetricName}\"},\"self\":{\"templated\":false,\"href\":\"" + host
			+ "/mgmt\"},\"metrics\":{\"templated\":false,\"href\":\"" + host
			+ "/mgmt/stats\"},\"info\":{\"templated\":false,\"href\":\"" + host + "/mgmt/info\"}}}";

	this.wireMock.stubFor(get("/mgmt").willReturn(ok(body).withHeader("Content-Type", ActuatorMediaType.V2_JSON)));

	QueryIndexEndpointStrategy strategy = new QueryIndexEndpointStrategy(this.instanceWebClient);

	// when
	StepVerifier.create(strategy.detectEndpoints(instance))
			// then
			.expectNext(Endpoints.single("metrics", host + "/mgmt/stats").withEndpoint("info", host + "/mgmt/info"))//
			.verifyComplete();
}
 

@Test
public void save() {
    //given
    Instance instance = Instance.create(InstanceId.of("foo"))
                                .register(Registration.create("name", "http://health").build());

    StepVerifier.create(repository.save(instance)).expectNext(instance).verifyComplete();

    //when/then
    StepVerifier.create(repository.find(instance.getId())).assertNext(loaded -> {
        assertThat(loaded.getId()).isEqualTo(instance.getId());
        assertThat(loaded.getVersion()).isEqualTo(instance.getVersion());
        assertThat(loaded.getRegistration()).isEqualTo(instance.getRegistration());
        assertThat(loaded.getInfo()).isEqualTo(instance.getInfo());
        assertThat(loaded.getStatusInfo()).isEqualTo(instance.getStatusInfo());
    }).verifyComplete();
}
 

@Test
public void should_return_endpoints_with_aligned_scheme() {
	// given
	Instance instance = Instance.create(InstanceId.of("id")).register(Registration
			.create("test", this.wireMock.url("/mgmt/health")).managementUrl(this.wireMock.url("/mgmt")).build());

	String host = "http://localhost:" + this.wireMock.httpsPort();
	String body = "{\"_links\":{\"metrics-requiredMetricName\":{\"templated\":true,\"href\":\"" + host
			+ "/mgmt/metrics/{requiredMetricName}\"},\"self\":{\"templated\":false,\"href\":\"" + host
			+ "/mgmt\"},\"metrics\":{\"templated\":false,\"href\":\"" + host
			+ "/mgmt/stats\"},\"info\":{\"templated\":false,\"href\":\"" + host + "/mgmt/info\"}}}";

	this.wireMock.stubFor(get("/mgmt").willReturn(ok(body).withHeader("Content-Type", ActuatorMediaType.V2_JSON)));

	QueryIndexEndpointStrategy strategy = new QueryIndexEndpointStrategy(this.instanceWebClient);

	// when
	String secureHost = "https://localhost:" + this.wireMock.httpsPort();
	StepVerifier.create(strategy.detectEndpoints(instance))
			// then
			.expectNext(Endpoints.single("metrics", secureHost + "/mgmt/stats").withEndpoint("info",
					secureHost + "/mgmt/info"))//
			.verifyComplete();
}
 

@Test
public void should_retry_computeIfPresent() {
    AtomicLong counter = new AtomicLong(3L);
    //given
    Instance instance1 = Instance.create(InstanceId.of("foo.1"))
                                 .register(Registration.create("foo", "http://health").build());
    StepVerifier.create(repository.save(instance1)).expectNextCount(1).verifyComplete();

    //when
    StepVerifier.create(repository.computeIfPresent(instance1.getId(),
        (key, application) -> counter.getAndDecrement() >
                              0L ? Mono.just(instance1) : Mono.just(application.withEndpoints(Endpoints.single(
            "info",
            "info"
        )))
    )).expectNext(instance1.withEndpoints(Endpoints.single("info", "info"))).verifyComplete();

    //then
    StepVerifier.create(repository.find(instance1.getId()))
                .assertNext(loaded -> assertThat(loaded.getEndpoints()).isEqualTo(Endpoints.single("info", "info")
                                                                                           .withEndpoint(
                                                                                               "health",
                                                                                               "http://health"
                                                                                           )))
                .verifyComplete();
}
 

@Test
public void should_run_compute_with_null() {
    //when
    InstanceId instanceId = InstanceId.of("foo");
    StepVerifier.create(repository.compute(instanceId, (key, application) -> {
        assertThat(application).isNull();
        return Mono.just(Instance.create(key).register(Registration.create("foo", "http://health").build()));
    }))
                .expectNext(Instance.create(instanceId)
                                    .register(Registration.create("foo", "http://health").build()))
                .verifyComplete();

    //then
    StepVerifier.create(repository.find(instanceId))
                .assertNext(loaded -> assertThat(loaded.getId()).isEqualTo(instanceId))
                .verifyComplete();
}
 
源代码22 项目: Moss   文件: InstanceTest.java

@Test
public void should_update_buildVersion() {
    Instance instance = Instance.create(InstanceId.of("id"));

    assertThat(instance.getBuildVersion()).isNull();

    Registration registration = Registration.create("foo-instance", "http://health")
                                            .metadata("version", "1.0.0")
                                            .build();
    instance = instance.register(registration).withInfo(Info.empty());
    assertThat(instance.getBuildVersion()).isEqualTo(BuildVersion.valueOf("1.0.0"));

    instance = instance.register(registration.toBuilder().clearMetadata().build());
    assertThat(instance.getBuildVersion()).isNull();

    instance = instance.withInfo(Info.from(singletonMap("build", singletonMap("version", "2.1.1"))));
    assertThat(instance.getBuildVersion()).isEqualTo(BuildVersion.valueOf("2.1.1"));

    instance = instance.deregister();
    assertThat(instance.getBuildVersion()).isNull();
}
 
源代码23 项目: Moss   文件: InstanceTest.java

@Test
public void should_extract_tags() {
    Instance instance = Instance.create(InstanceId.of("id"));

    assertThat(instance.getTags().getValues()).isEmpty();

    Registration registration = Registration.create("foo-instance", "http://health")
                                            .metadata("tags.environment", "test")
                                            .metadata("tags.region", "EU")
                                            .build();

    instance = instance.register(registration);
    assertThat(instance.getTags().getValues()).containsExactly(entry("environment", "test"), entry("region", "EU"));

    instance = instance.withInfo(Info.from(singletonMap("tags", singletonMap("region", "US-East"))));
    assertThat(instance.getTags().getValues()).containsExactly(
        entry("environment", "test"),
        entry("region", "US-East")
    );

    instance = instance.deregister();
    assertThat(instance.getTags().getValues()).isEmpty();

    instance = instance.register(registration.toBuilder().clearMetadata().build());
    assertThat(instance.getTags().getValues()).isEmpty();
}
 

@Test
public void verifySerializeWithOnlyRequiredProperties() throws IOException {
	InstanceId id = InstanceId.of("test123");
	Instant timestamp = Instant.ofEpochSecond(1587751031).truncatedTo(ChronoUnit.SECONDS);
	Registration registration = Registration.create("test", "http://localhost:9080/heath").build();

	InstanceRegistrationUpdatedEvent event = new InstanceRegistrationUpdatedEvent(id, 0L, timestamp, registration);

	JsonContent<InstanceRegistrationUpdatedEvent> jsonContent = jsonTester.write(event);
	assertThat(jsonContent).extractingJsonPathStringValue("$.instance").isEqualTo("test123");
	assertThat(jsonContent).extractingJsonPathNumberValue("$.version").isEqualTo(0);
	assertThat(jsonContent).extractingJsonPathNumberValue("$.timestamp").isEqualTo(1587751031.000000000);
	assertThat(jsonContent).extractingJsonPathStringValue("$.type").isEqualTo("REGISTRATION_UPDATED");
	assertThat(jsonContent).extractingJsonPathValue("$.registration").isNotNull();

	assertThat(jsonContent).extractingJsonPathStringValue("$.registration.name").isEqualTo("test");
	assertThat(jsonContent).extractingJsonPathStringValue("$.registration.managementUrl").isNull();
	assertThat(jsonContent).extractingJsonPathStringValue("$.registration.healthUrl")
			.isEqualTo("http://localhost:9080/heath");
	assertThat(jsonContent).extractingJsonPathStringValue("$.registration.serviceUrl").isNull();
	assertThat(jsonContent).extractingJsonPathStringValue("$.registration.source").isNull();
	assertThat(jsonContent).extractingJsonPathMapValue("$.registration.metadata").isEmpty();
}
 

@Test
public void convert_secure() {
    InstanceInfo instanceInfo = mock(InstanceInfo.class);
    when(instanceInfo.getSecureHealthCheckUrl()).thenReturn("");
    when(instanceInfo.getHealthCheckUrl()).thenReturn("http://localhost:80/mgmt/ping");
    EurekaServiceInstance service = mock(EurekaServiceInstance.class);
    when(service.getInstanceInfo()).thenReturn(instanceInfo);
    when(service.getUri()).thenReturn(URI.create("http://localhost:80"));
    when(service.getServiceId()).thenReturn("test");
    when(service.getMetadata()).thenReturn(singletonMap("management.context-path", "/mgmt"));

    Registration registration = new EurekaServiceInstanceConverter().convert(service);

    assertThat(registration.getName()).isEqualTo("test");
    assertThat(registration.getServiceUrl()).isEqualTo("http://localhost:80/");
    assertThat(registration.getManagementUrl()).isEqualTo("http://localhost:80/mgmt");
    assertThat(registration.getHealthUrl()).isEqualTo("http://localhost:80/mgmt/ping");
}
 
源代码26 项目: Moss   文件: InstancesController.java

/**
 * Register an instance.
 *
 * @param registration registration info
 * @param builder      UriComponentsBuilder
 * @return The registered instance id;
 */
@PostMapping(path = "/instances", consumes = MediaType.APPLICATION_JSON_VALUE)
public Mono<ResponseEntity<Map<String, InstanceId>>> register(@RequestBody Registration registration,
                                                              UriComponentsBuilder builder) {
    Registration withSource = Registration.copyOf(registration).source("http-api").build();
    LOGGER.debug("Register instance {}", withSource);
    return registry.register(withSource).map(id -> {
        URI location = builder.replacePath("/instances/{id}").buildAndExpand(id).toUri();
        return ResponseEntity.created(location).body(Collections.singletonMap("id", id));
    });
}
 

@Override
public List<BeanPropertyWriter> changeProperties(SerializationConfig config,
                                                 BeanDescription beanDesc,
                                                 List<BeanPropertyWriter> beanProperties) {
    if (!Registration.class.isAssignableFrom(beanDesc.getBeanClass())) {
        return beanProperties;
    }

    beanProperties.stream()
                  .filter(beanProperty -> "metadata".equals(beanProperty.getName()))
                  .forEach(beanProperty -> beanProperty.assignSerializer(metadataSerializer));
    return beanProperties;
}
 

@Test
public void verifySerialize() throws IOException {
	InstanceId id = InstanceId.of("test123");
	Instant timestamp = Instant.ofEpochSecond(1587751031).truncatedTo(ChronoUnit.SECONDS);
	Registration registration = Registration.create("test", "http://localhost:9080/heath")
			.managementUrl("http://localhost:9080/").serviceUrl("http://localhost:8080/").source("http-api")
			.metadata("PASSWORD", "qwertz123").metadata("user", "humptydumpty").build();

	InstanceRegisteredEvent event = new InstanceRegisteredEvent(id, 12345678L, timestamp, registration);

	JsonContent<InstanceRegisteredEvent> jsonContent = jsonTester.write(event);
	assertThat(jsonContent).extractingJsonPathStringValue("$.instance").isEqualTo("test123");
	assertThat(jsonContent).extractingJsonPathNumberValue("$.version").isEqualTo(12345678);
	assertThat(jsonContent).extractingJsonPathNumberValue("$.timestamp").isEqualTo(1587751031.000000000);
	assertThat(jsonContent).extractingJsonPathStringValue("$.type").isEqualTo("REGISTERED");
	assertThat(jsonContent).extractingJsonPathValue("$.registration").isNotNull();

	assertThat(jsonContent).extractingJsonPathStringValue("$.registration.name").isEqualTo("test");
	assertThat(jsonContent).extractingJsonPathStringValue("$.registration.managementUrl")
			.isEqualTo("http://localhost:9080/");
	assertThat(jsonContent).extractingJsonPathStringValue("$.registration.healthUrl")
			.isEqualTo("http://localhost:9080/heath");
	assertThat(jsonContent).extractingJsonPathStringValue("$.registration.serviceUrl")
			.isEqualTo("http://localhost:8080/");
	assertThat(jsonContent).extractingJsonPathStringValue("$.registration.source").isEqualTo("http-api");
	assertThat(jsonContent).extractingJsonPathMapValue("$.registration.metadata")
			.containsOnly(entry("PASSWORD", "******"), entry("user", "humptydumpty"));
}
 
源代码29 项目: Moss   文件: Instance.java

private Instance(InstanceId id,
                 long version,
                 @Nullable Registration registration,
                 boolean registered,
                 StatusInfo statusInfo,
                 Instant statusTimestamp,
                 Info info,
                 Endpoints endpoints,
                 @Nullable BuildVersion buildVersion,
                 Tags tags,
                 List<InstanceEvent> unsavedEvents) {
    Assert.notNull(id, "'id' must not be null");
    Assert.notNull(endpoints, "'endpoints' must not be null");
    Assert.notNull(info, "'info' must not be null");
    Assert.notNull(statusInfo, "'statusInfo' must not be null");
    this.id = id;
    this.version = version;
    this.registration = registration;
    this.registered = registered;
    this.statusInfo = statusInfo;
    this.statusTimestamp = statusTimestamp;
    this.info = info;
    this.endpoints = registered && registration != null ? endpoints.withEndpoint(Endpoint.HEALTH,
        registration.getHealthUrl()
    ) : endpoints;
    this.unsavedEvents = unsavedEvents;
    this.buildVersion = buildVersion;
    this.tags = tags;
}
 
源代码30 项目: Moss   文件: Instance.java

public Instance register(Registration registration) {
    Assert.notNull(registration, "'registration' must not be null");
    if (!this.isRegistered()) {
        return this.apply(new InstanceRegisteredEvent(this.id, this.nextVersion(), registration), true);
    }

    if (!Objects.equals(this.registration, registration)) {
        return this.apply(new InstanceRegistrationUpdatedEvent(this.id, this.nextVersion(), registration), true);
    }

    return this;
}