Package com.alibaba.dubbo.config.url.test

Source Code of com.alibaba.dubbo.config.url.test.InvokerSideConfigUrlTest

/*
* Copyright 1999-2011 Alibaba Group.
* 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.alibaba.dubbo.config.url.test;

import java.util.Arrays;

import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.logger.Logger;
import com.alibaba.dubbo.common.logger.LoggerFactory;
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ConsumerConfig;
import com.alibaba.dubbo.config.MethodConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.api.DemoService;
import com.alibaba.dubbo.config.support.MockRegistry;

/**
* @author haomin.liuhm
*
*/
public class InvokerSideConfigUrlTest extends UrlTestBase {
    private static final Logger log = LoggerFactory.getLogger(InvokerSideConfigUrlTest.class);

    // ======================================================
    //   invoker related data preparing
    // ====================================================== 
    private ApplicationConfig   appConfForConsumer;
    private ApplicationConfig   appConfForReference;
    private RegistryConfig      regConfForConsumer;
    private RegistryConfig      regConfForReference;
    private MethodConfig        methodConfForReference;
    private ConsumerConfig      consumerConf;
    private ReferenceConfig<DemoService>     refConf;
   
    private Object appConfForConsumerTable[][] = {
            {"", "", "", "", "", "", "", "", "", ""},
        };

    private Object appConfForReferenceTable[][] = {
            {"", "", "", "", "", "", "", "", "", ""},
        };
   
    private Object regConfForConsumerTable[][] = {
//            {"timeout", "registry.timeout", "int", 5000, 9000, "", "", "", "", ""},
//            {"file", "registry.file", "string", "", "regConfForServiceTable.log", "", "", "", "", ""},
//            {"wait", "registry.wait", "int", 0, 9000, "", "", "", "", ""},
//            {"transport", "registry.transporter", "string", "netty", "mina", "", "", "", "", ""},
            {"subscribe", "subscribe", "boolean", true, false, "", "", "", "", ""},
            {"dynamic", "dynamic", "boolean", true, false, "", "", "", "", ""},
        };
   
    private Object regConfForReferenceTable[][] = {
            {"timeout", "registry.timeout", "int", 5000, 9000, "", "", "", "", ""},
            {"file", "registry.file", "string", "", "regConfForServiceTable.log", "", "", "", "", ""},
            {"wait", "registry.wait", "int", 0, 9000, "", "", "", "", ""},
            {"transport", "registry.transporter", "string", "netty", "mina", "", "", "", "", ""},
            {"subscribe", "subscribe", "boolean", true, false, "", "", "", "", ""},
            {"dynamic", "dynamic", "boolean", true, false, "", "", "", "", ""},
        };
   
    private Object methodConfForReferenceTable[][] = {
            {"actives", "eatTiger.actives", "int", 0, 90, "", "", "", "", ""},
            {"executes", "eatTiger.executes", "int", 0, 90, "", "", "", "", ""},
            {"deprecated", "eatTiger.deprecated", "boolean", false, true, "", "", "", "", ""},
            {"async", "eatTiger.async", "boolean", false, true, "", "", "", "", ""},
            {"timeout", "eatTiger.timeout", "int", 0, 90, "", "", "", "", ""},
        };
   
    private Object refConfTable[][] = {
//            {"version", "version", "string", "0.0.0", "1.2.3", "", "", "", "", ""},
//            {"group", "group", "string", "", "HaominTest", "", "", "", "", ""},
           
//            {"delay", "delay", "int", 0, 5, "", "", "", "", ""}, // not boolean
            {"timeout", "timeout", "int", 5000, 3000, "", "", "", "", ""},
            {"retries", "retries", "int", 2, 5, "", "", "", "", ""},
            {"connections", "connections", "boolean", 100, 20, "", "", "", "", ""},
            {"loadbalance", "loadbalance", "string", "random", "roundrobin", "leastactive", "", "", ""},
            {"async", "async", "boolean", false, true, "", "", "", "", ""},
            //excluded = true
//            {"generic", "generic", "boolean", false, true, "", "", "", "", ""}, 
            {"check", "check", "boolean", false, true, "", "", "", "", ""},
            //{"local", "local", "string", "false", "HelloServiceLocal", "true", "", "", "", ""},
            //{"local", "local", "string", "false", "true", "", "", "", "", ""},
            //{"mock", "mock", "string", "false", "dubbo.test.HelloServiceMock", "true", "", "", "", ""},
            {"mock", "mock", "string", "false", "false", "", "", "", "", ""},
            {"proxy", "proxy", "boolean", "javassist", "jdk", "", "", "", "", ""},
            {"client", "client", "string", "netty", "mina", "", "", "", "", ""},
            {"client", "client", "string", "netty", "mina", "", "", "", "", ""},
            {"owner", "owner", "string", "", "haomin,ludvik", "", "", "", "", ""},
            {"actives", "actives", "int", 0, 30, "", "", "", "", ""},
            {"cluster", "cluster", "string", "failover", "failfast", "failsafe", "failback", "forking", "", ""},
            //excluded = true
//            {"filter", "service.filter", "string", "default", "-generic", "", "", "", "", ""},
            //excluded = true
//            {"listener", "exporter.listener", "string", "default", "-deprecated", "", "", "", "", ""},
            //{"", "", "", "", "", "", "", "", "", ""},
        };
   
    private Object consumerConfTable[][] = {
            {"timeout", "default.timeout", "int", 5000, 8000, "", "", "", "", ""},
            {"retries", "default.retries", "int", 2, 5, "", "", "", "", ""},
            {"loadbalance", "default.loadbalance", "string", "random", "leastactive", "", "", "", "", ""},
            {"async", "default.async", "boolean", false, true, "", "", "", "", ""},
            {"connections", "default.connections", "int", 100, 5, "", "", "", "", ""},
//            {"generic", "generic", "boolean", false, false, "", "", "", "", ""},
            {"check", "check", "boolean", true, false, "", "", "", "", ""},
            {"proxy", "proxy", "string", "javassist", "jdk", "javassist", "", "", "", ""},
            {"owner", "owner", "string", "", "haomin", "", "", "", "", ""},
            {"actives", "default.actives", "int", 0, 5, "", "", "", "", ""},
            {"cluster", "default.cluster", "string", "failover", "forking", "", "", "", "", ""},
            {"filter", "", "string", "", "", "", "", "", "", ""},
            {"listener", "", "string", "", "", "", "", "", "", ""},
//            {"", "", "", "", "", "", "", "", "", ""},
        };
   
    // ======================================================
    //   test Start
    // ======================================================
   
    @BeforeClass
    public static void start(){
       
        //RegistryController.startRegistryIfAbsence(1);
    }
   
   
    @Before
    public void setUp(){
       
        initServConf();
        initRefConf();
       
        return;
    }
   
    @After()
    public void teardown() {

        //RegistryServer.reloadCache();
    }
   
   
    @Test
    public void consumerConfUrlTest(){
        verifyInvokerUrlGeneration(consumerConf, consumerConfTable);
    }
   
    @Test
    public void refConfUrlTest(){
        verifyInvokerUrlGeneration(refConf, refConfTable);
    }
   
    @Ignore
    @Test //注册中心的参数不会在与consumer的query merge
    public void regConfForConsumerUrlTest(){
       
        verifyInvokerUrlGeneration(regConfForConsumer, regConfForConsumerTable);
       
    }
   
    // ======================================================
    //   private helper
    // ======================================================
    private void initRefConf(){
       
        appConfForConsumer      = new ApplicationConfig();
        appConfForReference     = new ApplicationConfig();
        regConfForConsumer      = new RegistryConfig();
        regConfForReference     = new RegistryConfig();
        methodConfForReference  = new MethodConfig();
       
        refConf                 = new ReferenceConfig<DemoService>();
        consumerConf            = new ConsumerConfig();

        methodConfForReference.setName("sayName");
        regConfForReference.setAddress("127.0.0.1:9090");
        regConfForReference.setProtocol("mockregistry");
        appConfForReference.setName("ConfigTests");
        refConf.setInterface("com.alibaba.dubbo.config.api.DemoService");
       
        refConf.setApplication(appConfForReference);
        consumerConf.setApplication(appConfForConsumer);
       
        refConf.setRegistry(regConfForReference);
        consumerConf.setRegistry(regConfForConsumer);
       
        refConf.setConsumer(consumerConf);
       
        refConf.setMethods(Arrays.asList(new MethodConfig[]{methodConfForReference}));
       
        refConf.setScope(Constants.SCOPE_REMOTE);
    }
   
    private <T> void verifyInvokerUrlGeneration(T config, Object[][] dataTable){
        servConf.export();
       
        fillConfigs(config, dataTable, TESTVALUE1);
        refConf.get();
       
        String subScribedUrlStr = getSubscribedUrlString();
       
        System.out.println("url string=========:"+subScribedUrlStr);
        String configName = config.getClass().getName();
        int column = TESTVALUE1;
       
        assertUrlStringWithLocalTable(subScribedUrlStr, dataTable, configName, column);
       
        //重新refer会判断如果已经订阅过,不再重新订阅。
        try {
            refConf.destroy();
        } catch (Exception e) {
        }
    }

    private String getSubscribedUrlString() {
        return MockRegistry.getSubscribedUrl().toString();
    }
}
TOP

Related Classes of com.alibaba.dubbo.config.url.test.InvokerSideConfigUrlTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.