Search in sources :

Example 6 with Holder

use of org.apache.servicecomb.serviceregistry.client.http.Holder in project java-chassis by ServiceComb.

the class TestMicroserviceRegisterTask method testFirstRegisterForProd.

/**
 * There is microservice information but no schema in service center.
 */
@Test
public void testFirstRegisterForProd(@Mocked ServiceRegistryClient srClient) {
    Microservice otherMicroservice = new Microservice();
    otherMicroservice.setAppId(microservice.getAppId());
    otherMicroservice.setServiceName("ms1");
    otherMicroservice.addSchema("s1", null);
    List<GetSchemaResponse> list = new ArrayList<>();
    GetSchemaResponse resp = new GetSchemaResponse();
    resp.setSchemaId("s1");
    list.add(resp);
    Holder<List<GetSchemaResponse>> onlineSchemasHolder = new Holder<>();
    onlineSchemasHolder.setValue(list).setStatusCode(200);
    new Expectations() {

        {
            srClient.getMicroserviceId(anyString, anyString, anyString, anyString);
            result = "serviceId";
            srClient.getMicroservice(anyString);
            result = otherMicroservice;
            srClient.getSchemas(anyString);
            result = onlineSchemasHolder;
            srClient.getSchema("serviceId", "s1");
            result = null;
            srClient.registerSchema("serviceId", "s1", "s1Content");
            result = true;
        }
    };
    microservice.addSchema("s1", "s1Content");
    microservice.setEnvironment("production");
    MicroserviceRegisterTask registerTask = new MicroserviceRegisterTask(eventBus, srClient, microservice);
    registerTask.run();
    Assert.assertEquals(true, registerTask.isRegistered());
    Assert.assertEquals(true, registerTask.isSchemaIdSetMatch());
    Assert.assertEquals("serviceId", microservice.getServiceId());
    Assert.assertEquals(1, taskList.size());
}
Also used : Expectations(mockit.Expectations) Microservice(org.apache.servicecomb.registry.api.registry.Microservice) Holder(org.apache.servicecomb.serviceregistry.client.http.Holder) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) GetSchemaResponse(org.apache.servicecomb.serviceregistry.api.response.GetSchemaResponse) Test(org.junit.Test)

Example 7 with Holder

use of org.apache.servicecomb.serviceregistry.client.http.Holder in project java-chassis by ServiceComb.

the class TestMicroserviceRegisterTask method testLocalSchemaAndServiceCenterSchemaIgnoreDiff.

@Test
public void testLocalSchemaAndServiceCenterSchemaIgnoreDiff(@Mocked ServiceRegistryClient srClient, @Mocked ServiceRegistryConfig serviceRegistryConfig) {
    Microservice otherMicroservice = new Microservice();
    otherMicroservice.setAppId(microservice.getAppId());
    otherMicroservice.setServiceName("ms1");
    otherMicroservice.addSchema("s1", "abcd");
    List<GetSchemaResponse> list = new ArrayList<>();
    GetSchemaResponse resp = new GetSchemaResponse();
    resp.setSchemaId("s1");
    resp.setSummary("c1188d709631a9038874f9efc6eb894f");
    list.add(resp);
    Holder<List<GetSchemaResponse>> onlineSchemasHolder = new Holder<>();
    onlineSchemasHolder.setValue(list).setStatusCode(200);
    new Expectations() {

        {
            serviceRegistryConfig.isIgnoreSwaggerDifference();
            result = true;
            srClient.getMicroserviceId(anyString, anyString, anyString, anyString);
            result = "serviceId";
            srClient.getMicroservice(anyString);
            result = otherMicroservice;
            srClient.getSchemas(anyString);
            result = onlineSchemasHolder;
            srClient.getSchema(anyString, anyString);
            result = "swagger: \"2.0\"\n" + "info:\n" + "  version: \"1.0.0\"\n" + "  title: \"swagger definition for org.apache.servicecomb.demo.jaxrs.server.RequestClientTimeOut\"\n" + "  x-java-interface: \"cse.gen.jaxrstest.jaxrs.clientreqtimeout.RequestClientTimeOutIntf\"\n" + "basePath: \"/clientreqtimeout\"\n" + "consumes:\n" + "- \"application/json\"\n" + "produces:\n" + "- \"application/json\"\n" + "paths:\n" + "  /sayhello:\n" + "    post:\n" + "      operationId: \"sayHello\"\n" + "      parameters:\n" + "      - in: \"body\"\n" + "        name: \"student\"\n" + "        required: false\n" + "        schema:\n" + "          $ref: \"#/definitions/Student\"\n" + "      responses:\n" + "        200:\n" + "          description: \"response of 200\"\n" + "          schema:\n" + "            $ref: \"#/definitions/Student\"\n" + "definitions:\n" + "  Student:\n" + "    type: \"object\"\n" + "    required:\n" + "    - \"name\"\n" + "    properties:\n" + "      name:\n" + "        type: \"string\"\n" + "      age:\n" + "        type: \"integer\"\n" + "        format: \"int32\"\n" + "        maximum: 20\n" + "    x-java-class: \"org.apache.servicecomb.demo.validator.Student\"";
        }
    };
    microservice.addSchema("s1", "swagger: \"2.0\"\n" + "info:\n" + "  version: \"1.0.0\"\n" + "  title: \"swagger definition for org.apache.servicecomb.demo.jaxrs.server.RequestClientTimeOut\"\n" + "  x-java-interface: \"cse.gen.jaxrstest.jaxrs.clientreqtimeout.RequestClientTimeOutIntf\"\n" + "basePath: \"/clientreqtimeout\"\n" + "consumes:\n" + "- \"application/json\"\n" + "produces:\n" + "- \"application/json\"\n" + "paths:\n" + "  /sayhello:\n" + "    post:\n" + "      operationId: \"sayHello\"\n" + "      parameters:\n" + "      - in: \"body\"\n" + "        name: \"student\"\n" + "        required: false\n" + "        schema:\n" + "          $ref: \"#/definitions/Student\"\n" + "      responses:\n" + "        200:\n" + "          description: \"response of 200\"\n" + "          schema:\n" + "            type: \"string\"\n" + "definitions:\n" + "  Student:\n" + "    type: \"object\"\n" + "    required:\n" + "    - \"name\"\n" + "    properties:\n" + "      name:\n" + "        type: \"string\"\n" + "      age:\n" + "        type: \"integer\"\n" + "        format: \"int32\"\n" + "        maximum: 20\n" + "    x-java-class: \"org.apache.servicecomb.demo.validator.Student\"");
    microservice.setEnvironment("prod");
    MicroserviceRegisterTask registerTask = new MicroserviceRegisterTask(eventBus, srClient, microservice);
    Boolean isIlleagalException = false;
    try {
        registerTask.run();
    } catch (IllegalStateException exception) {
        isIlleagalException = true;
    }
    Assert.assertEquals(false, isIlleagalException);
}
Also used : Expectations(mockit.Expectations) Microservice(org.apache.servicecomb.registry.api.registry.Microservice) Holder(org.apache.servicecomb.serviceregistry.client.http.Holder) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) GetSchemaResponse(org.apache.servicecomb.serviceregistry.api.response.GetSchemaResponse) Test(org.junit.Test)

Example 8 with Holder

use of org.apache.servicecomb.serviceregistry.client.http.Holder in project java-chassis by ServiceComb.

the class LocalServiceRegistryClientImpl method getSchemas.

@Override
public Holder<List<GetSchemaResponse>> getSchemas(String microserviceId) {
    Microservice microservice = microserviceIdMap.get(microserviceId);
    if (microservice == null) {
        throw new IllegalArgumentException("Invalid serviceId, serviceId=" + microserviceId);
    }
    List<GetSchemaResponse> schemas = new ArrayList<>();
    microservice.getSchemaMap().forEach((key, val) -> {
        GetSchemaResponse schema = new GetSchemaResponse();
        schema.setSchema(val);
        schema.setSchemaId(key);
        schema.setSummary(Hashing.sha256().newHasher().putString(val, Charsets.UTF_8).hash().toString());
        schemas.add(schema);
    });
    Holder<List<GetSchemaResponse>> resultHolder = new Holder<>();
    resultHolder.setStatusCode(Status.OK.getStatusCode()).setValue(schemas);
    return resultHolder;
}
Also used : Microservice(org.apache.servicecomb.registry.api.registry.Microservice) Holder(org.apache.servicecomb.serviceregistry.client.http.Holder) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) GetSchemaResponse(org.apache.servicecomb.serviceregistry.api.response.GetSchemaResponse)

Example 9 with Holder

use of org.apache.servicecomb.serviceregistry.client.http.Holder in project java-chassis by ServiceComb.

the class TestMicroserviceRegisterTask method testRegisterSchemaSuccess.

/**
 * There is no microservice information in service center.
 */
@Test
public void testRegisterSchemaSuccess(@Mocked ServiceRegistryClient srClient) {
    microservice.addSchema("s1", "s1Content");
    Holder<List<GetSchemaResponse>> onlineSchemasHolder = new Holder<>();
    onlineSchemasHolder.setStatusCode(200);
    ArrayList<GetSchemaResponse> schemaResponseList = new ArrayList<>();
    onlineSchemasHolder.setValue(schemaResponseList);
    GetSchemaResponse schemaResponse = new GetSchemaResponse();
    schemaResponseList.add(schemaResponse);
    schemaResponse.setSchemaId("s1");
    new Expectations() {

        {
            srClient.getMicroserviceId(anyString, anyString, anyString, anyString);
            result = null;
            srClient.registerMicroservice((Microservice) any);
            result = "serviceId";
            srClient.getSchema("serviceId", "s1");
            result = "s1Content";
            srClient.getSchemas("serviceId");
            result = onlineSchemasHolder;
        }
    };
    MicroserviceRegisterTask registerTask = new MicroserviceRegisterTask(eventBus, srClient, microservice);
    registerTask.run();
    Assert.assertEquals(true, registerTask.isRegistered());
    Assert.assertEquals(true, registerTask.isSchemaIdSetMatch());
    Assert.assertEquals("serviceId", microservice.getServiceId());
    Assert.assertEquals("serviceId", microservice.getInstance().getServiceId());
    Assert.assertEquals(1, taskList.size());
}
Also used : Expectations(mockit.Expectations) Holder(org.apache.servicecomb.serviceregistry.client.http.Holder) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) GetSchemaResponse(org.apache.servicecomb.serviceregistry.api.response.GetSchemaResponse) Test(org.junit.Test)

Example 10 with Holder

use of org.apache.servicecomb.serviceregistry.client.http.Holder in project java-chassis by ServiceComb.

the class TestMicroserviceRegisterTask method testRegisterSchemaFailed.

/**
 * Local schemaId set is consistent with online schemaId set, and schema contents are not registered.
 * This service instance try to register schema content but failed.
 */
@Test
public void testRegisterSchemaFailed(@Mocked ServiceRegistryClient srClient) {
    microservice.addSchema("s1", "");
    microservice.addSchema("exist", "");
    Holder<List<GetSchemaResponse>> onlineSchemasHolder = new Holder<>();
    onlineSchemasHolder.setStatusCode(200);
    ArrayList<GetSchemaResponse> schemaResponses = new ArrayList<>();
    onlineSchemasHolder.setValue(schemaResponses);
    GetSchemaResponse schemaResponse = new GetSchemaResponse();
    schemaResponse.setSchemaId("s1");
    schemaResponses.add(schemaResponse);
    schemaResponse.setSchemaId("exist");
    schemaResponses.add(schemaResponse);
    new Expectations() {

        {
            srClient.getMicroserviceId(anyString, anyString, anyString, anyString);
            result = null;
            srClient.registerMicroservice((Microservice) any);
            result = "serviceId";
            srClient.registerSchema(anyString, anyString, anyString);
            result = false;
            srClient.getSchemas("serviceId");
            this.result = onlineSchemasHolder;
        }
    };
    MicroserviceRegisterTask registerTask = new MicroserviceRegisterTask(eventBus, srClient, microservice);
    registerTask.run();
    Assert.assertEquals(false, registerTask.isRegistered());
    Assert.assertEquals(false, registerTask.isSchemaIdSetMatch());
    Assert.assertEquals("serviceId", microservice.getServiceId());
    Assert.assertEquals("serviceId", microservice.getInstance().getServiceId());
    Assert.assertEquals(1, taskList.size());
}
Also used : Expectations(mockit.Expectations) Holder(org.apache.servicecomb.serviceregistry.client.http.Holder) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) GetSchemaResponse(org.apache.servicecomb.serviceregistry.api.response.GetSchemaResponse) Test(org.junit.Test)

Aggregations

ArrayList (java.util.ArrayList)12 List (java.util.List)12 GetSchemaResponse (org.apache.servicecomb.serviceregistry.api.response.GetSchemaResponse)12 Holder (org.apache.servicecomb.serviceregistry.client.http.Holder)12 Expectations (mockit.Expectations)11 Test (org.junit.Test)11 Microservice (org.apache.servicecomb.registry.api.registry.Microservice)10