Merge pull request #118 from mingyixu/master

add open api testcases
This commit is contained in:
Keep 2018-10-11 11:41:42 +08:00 committed by GitHub
commit 82075cd136
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -15,11 +15,19 @@
*/ */
package com.alibaba.nacos.test.config; package com.alibaba.nacos.test.config;
import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.api.NacosFactory; import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.PropertyKeyConst; import com.alibaba.nacos.api.PropertyKeyConst;
import com.alibaba.nacos.api.common.Constants;
import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.AbstractListener;
import com.alibaba.nacos.api.config.listener.Listener; import com.alibaba.nacos.api.config.listener.Listener;
import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.client.config.impl.HttpSimpleClient.HttpResult;
import com.alibaba.nacos.client.config.impl.LocalConfigInfoProcessor;
import com.alibaba.nacos.client.config.impl.ServerHttpAgent;
import com.alibaba.nacos.client.logger.json.JSONObject;
import com.alibaba.nacos.client.utils.StringUtils;
import com.alibaba.nacos.config.server.Config; import com.alibaba.nacos.config.server.Config;
import org.junit.After; import org.junit.After;
import org.junit.Assert; import org.junit.Assert;
@ -31,6 +39,11 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.server.LocalServerPort; import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.Arrays;
import java.util.List;
import java.util.Properties; import java.util.Properties;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -44,6 +57,9 @@ import java.util.concurrent.atomic.AtomicInteger;
public class ConfigAPI_ITCase { public class ConfigAPI_ITCase {
public static final long TIME_OUT = 3000; public static final long TIME_OUT = 3000;
public ConfigService iconfig = null; public ConfigService iconfig = null;
ServerHttpAgent agent = null;
static final String CONFIG_CONTROLLER_PATH = "/v1/cs/configs";
String SPECIAL_CHARACTERS = "!@#$%^&*()_+-=_|/'?."; String SPECIAL_CHARACTERS = "!@#$%^&*()_+-=_|/'?.";
String dataId = "yanlin"; String dataId = "yanlin";
String group = "yanlin"; String group = "yanlin";
@ -59,6 +75,9 @@ public class ConfigAPI_ITCase {
Properties properties = new Properties(); Properties properties = new Properties();
properties.put(PropertyKeyConst.SERVER_ADDR, "127.0.0.1"+":"+port); properties.put(PropertyKeyConst.SERVER_ADDR, "127.0.0.1"+":"+port);
iconfig = NacosFactory.createConfigService(properties); iconfig = NacosFactory.createConfigService(properties);
agent = new ServerHttpAgent(properties);
agent.start();
} }
@After @After
@ -67,8 +86,8 @@ public class ConfigAPI_ITCase {
/** /**
* @TCDescription : nacos_正常获取数据 * @TCDescription : nacos_正常获取数据
* @TestStep : TODO Test steps * @TestStep :
* @ExpectResult : TODO expect results * @ExpectResult :
*/ */
@Test(timeout = 3*TIME_OUT) @Test(timeout = 3*TIME_OUT)
public void nacos_getconfig_1() throws Exception { public void nacos_getconfig_1() throws Exception {
@ -312,15 +331,13 @@ public class ConfigAPI_ITCase {
Listener ml = new Listener() { Listener ml = new Listener() {
@Override @Override
public void receiveConfigInfo(String configInfo) { public void receiveConfigInfo(String configInfo) {
// TODO Auto-generated method stub System.out.println("recieve23:" + configInfo);
System.out.println("recieve2:" + configInfo);
count.incrementAndGet(); count.incrementAndGet();
Assert.assertEquals(content, configInfo); Assert.assertEquals(content, configInfo);
} }
@Override @Override
public Executor getExecutor() { public Executor getExecutor() {
// TODO Auto-generated method stub
return null; return null;
} }
}; };
@ -328,14 +345,14 @@ public class ConfigAPI_ITCase {
while (count.get() == 0) { while (count.get() == 0) {
Thread.sleep(2000); Thread.sleep(2000);
} }
Assert.assertEquals(1, count.get()); Assert.assertTrue(count.get() >= 1);
iconfig.removeListener(dataId, group, ml); iconfig.removeListener(dataId, group, ml);
} }
/** /**
* @TCDescription : nacos_设置监听器为null抛出异常信息 * @TCDescription : nacos_设置监听器为null抛出异常信息
* @TestStep : TODO Test steps * @TestStep :
* @ExpectResult : TODO expect results * @ExpectResult :
* @author xiaochun.xxc * @author xiaochun.xxc
* @since 3.6.8 * @since 3.6.8
*/ */
@ -364,19 +381,12 @@ public class ConfigAPI_ITCase {
boolean result = iconfig.publishConfig(dataId, group, content); boolean result = iconfig.publishConfig(dataId, group, content);
Assert.assertTrue(result); Assert.assertTrue(result);
Listener ml = new Listener() { Listener ml = new AbstractListener() {
@Override @Override
public void receiveConfigInfo(String configInfo) { public void receiveConfigInfo(String configInfo) {
// TODO Auto-generated method stub
count.incrementAndGet(); count.incrementAndGet();
Assert.assertEquals(content, configInfo); Assert.assertEquals(content, configInfo);
} }
@Override
public Executor getExecutor() {
// TODO Auto-generated method stub
return null;
}
}; };
iconfig.addListener(dataId, group, ml); iconfig.addListener(dataId, group, ml);
while (count.get() == 0) { while (count.get() == 0) {
@ -400,18 +410,11 @@ public class ConfigAPI_ITCase {
iconfig.removeConfig(dataId, group); iconfig.removeConfig(dataId, group);
Thread.sleep(TIME_OUT); Thread.sleep(TIME_OUT);
Listener ml = new Listener() { Listener ml = new AbstractListener() {
@Override @Override
public void receiveConfigInfo(String configInfo) { public void receiveConfigInfo(String configInfo) {
// TODO Auto-generated method stub
count.incrementAndGet(); count.incrementAndGet();
} }
@Override
public Executor getExecutor() {
// TODO Auto-generated method stub
return null;
}
}; };
iconfig.addListener(dataId, group, ml); iconfig.addListener(dataId, group, ml);
Thread.sleep(TIME_OUT); Thread.sleep(TIME_OUT);
@ -435,33 +438,19 @@ public class ConfigAPI_ITCase {
*/ */
@Test(timeout = 5*TIME_OUT) @Test(timeout = 5*TIME_OUT)
public void nacos_removeListener_1() throws Exception { public void nacos_removeListener_1() throws Exception {
iconfig.addListener(dataId, group, new Listener() { iconfig.addListener(dataId, group, new AbstractListener() {
@Override @Override
public void receiveConfigInfo(String configInfo) { public void receiveConfigInfo(String configInfo) {
// TODO Auto-generated method stub
Assert.assertTrue(false); Assert.assertTrue(false);
} }
@Override
public Executor getExecutor() {
// TODO Auto-generated method stub
return null;
}
}); });
Thread.sleep(TIME_OUT); Thread.sleep(TIME_OUT);
try { try {
iconfig.removeListener(dataId, group, new Listener() { iconfig.removeListener(dataId, group, new AbstractListener() {
@Override @Override
public void receiveConfigInfo(String configInfo) { public void receiveConfigInfo(String configInfo) {
// TODO Auto-generated method stub
System.out.println("remove recieve:" + configInfo); System.out.println("remove recieve:" + configInfo);
} }
@Override
public Executor getExecutor() {
// TODO Auto-generated method stub
return null;
}
}); });
} catch (Exception e) { } catch (Exception e) {
@ -479,16 +468,10 @@ public class ConfigAPI_ITCase {
public void nacos_removeListener_2() { public void nacos_removeListener_2() {
group += "test.nacos"; group += "test.nacos";
try { try {
iconfig.removeListener(dataId, group, new Listener() { iconfig.removeListener(dataId, group, new AbstractListener() {
@Override @Override
public void receiveConfigInfo(String configInfo) { public void receiveConfigInfo(String configInfo) {
// TODO Auto-generated method stub
}
@Override
public Executor getExecutor() {
// TODO Auto-generated method stub
return null;
} }
}); });
} catch (Exception e) { } catch (Exception e) {
@ -508,23 +491,13 @@ public class ConfigAPI_ITCase {
final String contentRemove = "test-abc-two"; final String contentRemove = "test-abc-two";
final AtomicInteger count = new AtomicInteger(0); final AtomicInteger count = new AtomicInteger(0);
Listener ml = new Listener() { Listener ml = new AbstractListener() {
@Override
public Executor getExecutor() {
return null;
}
@Override @Override
public void receiveConfigInfo(String configInfo) { public void receiveConfigInfo(String configInfo) {
count.incrementAndGet(); count.incrementAndGet();
} }
}; };
Listener ml1 = new Listener() { Listener ml1 = new AbstractListener() {
@Override
public Executor getExecutor() {
return null;
}
@Override @Override
public void receiveConfigInfo(String configInfo) { public void receiveConfigInfo(String configInfo) {
//System.out.println("ml1 remove listener recieve:" + configInfo); //System.out.println("ml1 remove listener recieve:" + configInfo);
@ -561,4 +534,237 @@ public class ConfigAPI_ITCase {
Assert.assertTrue(true); Assert.assertTrue(true);
} }
/**
* @TCDescription : nacos_openAPI_配置具体信息
* @TestStep :
* @ExpectResult :
* @author xiaochun.xxc
* @since 3.6.8
*/
@Test(timeout = 3*TIME_OUT)
public void nacos_openAPI_detailConfig_1() {
HttpResult result = null;
try {
final String content = "test";
boolean ret = iconfig.publishConfig(dataId, group, content);
Thread.sleep(TIME_OUT);
Assert.assertTrue(ret);
List<String> params = Arrays.asList("dataId", dataId, "group", group, "show", "all");
result = agent.httpGet(CONFIG_CONTROLLER_PATH, null, params, agent.getEncode(), TIME_OUT);
Assert.assertEquals(HttpURLConnection.HTTP_OK, result.code);
Assert.assertEquals(content, JSON.parseObject(result.content).getString("content"));
} catch (Exception e) {
Assert.assertTrue(false);
}
}
/**
* @TCDescription : nacos_openAPI_catalog信息
* @TestStep :
* @ExpectResult :
* @author xiaochun.xxc
* @since 3.6.8
*/
@Test(timeout = 3*TIME_OUT)
public void nacos_openAPI_catalog() {
HttpResult result = null;
try {
final String content = "test";
boolean ret = iconfig.publishConfig(dataId, group, content);
Thread.sleep(TIME_OUT);
Assert.assertTrue(ret);
List<String> params = Arrays.asList("dataId", dataId, "group", group);
result = agent.httpGet(CONFIG_CONTROLLER_PATH+"/catalog", null, params, agent.getEncode(), TIME_OUT);
Assert.assertEquals(HttpURLConnection.HTTP_OK, result.code);
System.out.println(result.content);
Assert.assertNotNull(JSON.parseObject(result.content).getString("data"));
} catch (Exception e) {
Assert.assertTrue(false);
}
}
/**
* @TCDescription : nacos_openAPI_queryBeta信息
* @TestStep :
* @ExpectResult :
* @author xiaochun.xxc
* @since 3.6.8
*/
@Test(timeout = 3*TIME_OUT)
public void nacos_openAPI_queryBeta_1() {
HttpResult result = null;
try {
final String content = "test-beta";
List<String> headers = Arrays.asList("betaIps", "127.0.0.1");
List<String> params1 = Arrays.asList("dataId", dataId, "group", group, "content", content);
result = agent.httpPost(CONFIG_CONTROLLER_PATH + "/", headers, params1, agent.getEncode(), TIME_OUT);
Assert.assertEquals(HttpURLConnection.HTTP_OK, result.code);
Assert.assertEquals("true", result.content);
List<String> params = Arrays.asList("dataId", dataId, "group", group, "beta", "true");
result = agent.httpGet(CONFIG_CONTROLLER_PATH + "/", null, params, agent.getEncode(), TIME_OUT);
Assert.assertEquals(HttpURLConnection.HTTP_OK, result.code);
Assert.assertEquals(content, JSON.parseObject(result.content).getJSONObject("data").getString("content"));
} catch (Exception e) {
Assert.assertTrue(false);
}
}
/**
* @TCDescription : nacos_openAPI_queryBeta删除信息
* @TestStep : 1. 发布配置
* 2. 删除Beta配置信息
* @ExpectResult :
* @author xiaochun.xxc
* @since 3.6.8
*/
@Test(timeout = 3*TIME_OUT)
public void nacos_openAPI_queryBeta_delete() {
HttpResult result = null;
try {
final String content = "test-beta";
List<String> headers = Arrays.asList("betaIps", "127.0.0.1");
List<String> params1 = Arrays.asList("dataId", dataId, "group", group, "content", content);
result = agent.httpPost(CONFIG_CONTROLLER_PATH + "/", headers, params1, agent.getEncode(), TIME_OUT);
Assert.assertEquals(HttpURLConnection.HTTP_OK, result.code);
Assert.assertEquals("true", result.content);
List<String> params = Arrays.asList("dataId", dataId, "group", group, "beta", "true");
result = agent.httpDelete(CONFIG_CONTROLLER_PATH + "/", null, params, agent.getEncode(), TIME_OUT);
Assert.assertEquals(HttpURLConnection.HTTP_OK, result.code);
Assert.assertEquals(true, JSON.parseObject(result.content).getBoolean("data"));
} catch (Exception e) {
Assert.assertTrue(false);
}
}
/**
* @TCDescription : nacos_openAPI_模糊查询配置信息
* @TestStep : 1. 发布配置
* 2. 模糊查询
* @ExpectResult : 获取查询到配置
* @author xiaochun.xxc
* @since 3.6.8
*/
@Test(timeout = 3*TIME_OUT)
public void nacos_openAPI_fuzzySearchConfig() {
HttpResult result = null;
try {
final String content = "test123";
boolean ret = iconfig.publishConfig(dataId, group, content);
Thread.sleep(TIME_OUT);
Assert.assertTrue(ret);
List<String> params = Arrays.asList("dataId", dataId, "group", group, "pageNo","1", "pageSize","10", "search", "blur");
result = agent.httpGet(CONFIG_CONTROLLER_PATH + "/", null, params, agent.getEncode(), TIME_OUT);
Assert.assertEquals(HttpURLConnection.HTTP_OK, result.code);
Assert.assertTrue(JSON.parseObject(result.content).getIntValue("totalCount") >= 1);
Assert.assertTrue(JSON.parseObject(result.content).getJSONArray("pageItems").getJSONObject(0).getString("content").startsWith(content));
} catch (Exception e) {
Assert.assertTrue(false);
}
}
/**
* @TCDescription : nacos_openAPI_模糊查询配置信息
* @TestStep : 1. 发布配置
* 2. 查询配置信息
* @ExpectResult : 获取查询到配置
* @author xiaochun.xxc
* @since 3.6.8
*/
@Test(timeout = 3*TIME_OUT)
public void nacos_openAPI_fuzzySearchConfig_1() {
HttpResult result = null;
try {
final String content = "test123";
boolean ret = iconfig.publishConfig(dataId, group, content);
Thread.sleep(TIME_OUT);
Assert.assertTrue(ret);
List<String> params = Arrays.asList("dataId", dataId+"*", "group", group+"*", "pageNo","1", "pageSize","10", "search", "blur");
result = agent.httpGet(CONFIG_CONTROLLER_PATH + "/", null, params, agent.getEncode(), TIME_OUT);
Assert.assertEquals(HttpURLConnection.HTTP_OK, result.code);
Assert.assertTrue(JSON.parseObject(result.content).getIntValue("totalCount") >= 1);
Assert.assertEquals(content, JSON.parseObject(result.content).getJSONArray("pageItems").getJSONObject(0).getString("content"));
} catch (Exception e) {
Assert.assertTrue(false);
}
}
/**
* @TCDescription : nacos_openAPI_查询配置信息
* @TestStep : 1. 发布配置
* 2. 查询配置信息
* @ExpectResult : 获取查询到配置
* @author xiaochun.xxc
* @since 3.6.8
*/
@Test(timeout = 3*TIME_OUT)
public void nacos_openAPI_searchConfig() {
HttpResult result = null;
try {
final String content = "test123";
boolean ret = iconfig.publishConfig(dataId, group, content);
Thread.sleep(TIME_OUT);
Assert.assertTrue(ret);
List<String> params = Arrays.asList("dataId", dataId, "group", group, "pageNo","1", "pageSize","10", "search", "accurate");
result = agent.httpGet(CONFIG_CONTROLLER_PATH + "/", null, params, agent.getEncode(), TIME_OUT);
Assert.assertEquals(HttpURLConnection.HTTP_OK, result.code);
Assert.assertTrue(JSON.parseObject(result.content).getIntValue("totalCount") == 1);
Assert.assertEquals(content, JSON.parseObject(result.content).getJSONArray("pageItems").getJSONObject(0).getString("content"));
} catch (Exception e) {
Assert.assertTrue(false);
}
}
/**
* @TCDescription : nacos_openAPI_查询配置信息包含中文utf-8
* @TestStep : 1. 发布配置
* 2. 查询配置信息
* @ExpectResult : 获取查询到配置
* @author xiaochun.xxc
* @since 3.6.8
*/
@Test(timeout = 3*TIME_OUT)
public void nacos_openAPI_searchConfig_2() {
HttpResult result = null;
try {
final String content = "test测试";
boolean ret = iconfig.publishConfig(dataId, group, content);
Thread.sleep(TIME_OUT);
Assert.assertTrue(ret);
List<String> params = Arrays.asList("dataId", dataId, "group", group, "pageNo","1", "pageSize","10", "search", "accurate");
result = agent.httpGet(CONFIG_CONTROLLER_PATH + "/", null, params, "utf-8", TIME_OUT);
Assert.assertEquals(HttpURLConnection.HTTP_OK, result.code);
Assert.assertTrue(JSON.parseObject(result.content).getIntValue("totalCount") == 1);
Assert.assertEquals(content, JSON.parseObject(result.content).getJSONArray("pageItems").getJSONObject(0).getString("content"));
} catch (Exception e) {
Assert.assertTrue(false);
}
}
} }