parent
bba93a7db5
commit
10a6e950d1
|
@ -26,7 +26,7 @@
|
|||
</property>
|
||||
<property>
|
||||
<name>hbase.zookeeper.quorum</name>
|
||||
<value>133.133.134.188</value>
|
||||
<value>133.133.13.154</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>hbase.zookeeper.property.dataDir</name>
|
||||
|
|
|
@ -29,12 +29,23 @@ public class HBasePlugin {
|
|||
private final HTable tableUnderTest;
|
||||
|
||||
@Constructor
|
||||
public HBasePlugin() {
|
||||
public HBasePlugin(
|
||||
@Parameter(value = "dnsServer", type = SupportTypes.Field) String dnsServer,
|
||||
@Parameter(value = "zookeeperQuorum", type = SupportTypes.Field) String zookeeperQuorum,
|
||||
@Parameter(value = "zookeeperDataDir", type = SupportTypes.Field) String zookeeperDataDir,
|
||||
@Parameter(value = "masterAdrress", type = SupportTypes.Field) String masterAdrress,
|
||||
@Parameter(value = "tableName", type = SupportTypes.Field) String tableName) {
|
||||
conf = HBaseConfiguration.create();
|
||||
try {
|
||||
Configuration config = new Configuration();
|
||||
config.set("hbase.master.dns.nameserver", dnsServer);
|
||||
config.setBoolean("hbase.cluster.distributed", true);
|
||||
config.set("hbase.zookeeper.quorum", zookeeperQuorum);
|
||||
config.set("hbase.zookeeper.property.dataDir", zookeeperDataDir);
|
||||
config.set("hbase.master.info.bindAddress", masterAdrress);
|
||||
@SuppressWarnings({ "unused", "resource" })
|
||||
HBaseAdmin admin = new HBaseAdmin(conf);
|
||||
tableUnderTest = new HTable(conf, "users");
|
||||
HBaseAdmin admin = new HBaseAdmin(config);
|
||||
tableUnderTest = new HTable(conf, tableName);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new Bench4QRunTimeException("Construct HBasePlugin fails!", e);
|
||||
|
@ -47,8 +58,8 @@ public class HBasePlugin {
|
|||
@Parameter(value = "value", type = SupportTypes.Field) String value) {
|
||||
try {
|
||||
Put put = new Put(UUID.randomUUID().toString().getBytes());
|
||||
put.add("key".getBytes(), "key".getBytes(), key.getBytes());
|
||||
put.add("value".getBytes(), "value".getBytes(), value.getBytes());
|
||||
put.add("key1".getBytes(), "key1".getBytes(), key.getBytes());
|
||||
put.add("value1".getBytes(), "value1".getBytes(), value.getBytes());
|
||||
this.tableUnderTest.put(put);
|
||||
} catch (Exception ex) {
|
||||
Logger.getLogger(HBasePlugin.class).info(ex, ex);
|
||||
|
@ -57,11 +68,12 @@ public class HBasePlugin {
|
|||
return new HBaseReturn(true);
|
||||
}
|
||||
|
||||
public HBaseReturn Query(
|
||||
@Behavior(value = "Query", type = BehaviorType.USER_BEHAVIOR)
|
||||
public HBaseReturn query(
|
||||
@Parameter(value = "key", type = SupportTypes.Field) String key) {
|
||||
try {
|
||||
Filter filter = new SingleColumnValueFilter(Bytes.toBytes("key"),
|
||||
Bytes.toBytes("key"), CompareOp.EQUAL, Bytes.toBytes("aaa")); // 当列column1的值为aaa时进行查询
|
||||
Filter filter = new SingleColumnValueFilter(Bytes.toBytes("key1"),
|
||||
Bytes.toBytes("key1"), CompareOp.EQUAL, Bytes.toBytes(key)); // µ±ÁÐcolumn1µÄֵΪaaaʱ½øÐвéѯ
|
||||
Scan s = new Scan();
|
||||
s.setFilter(filter);
|
||||
ResultScanner resultScanner = this.tableUnderTest.getScanner(s);
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
package org.bench4q.agent.plugin.basic;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public abstract class PluginReturn {
|
||||
private int successCount;
|
||||
private int failCount;
|
||||
private Map<String, String> runTimeParams;
|
||||
|
||||
public int getSuccessCount() {
|
||||
return successCount;
|
||||
|
@ -24,32 +20,14 @@ public abstract class PluginReturn {
|
|||
this.failCount = failCount;
|
||||
}
|
||||
|
||||
public Map<String, String> getRunTimeParams() {
|
||||
return runTimeParams;
|
||||
}
|
||||
|
||||
public void setRunTimeParams(Map<String, String> runTimeParams) {
|
||||
this.runTimeParams = runTimeParams;
|
||||
}
|
||||
|
||||
public PluginReturn() {
|
||||
this.setRunTimeParams(new LinkedHashMap<String, String>());
|
||||
}
|
||||
|
||||
public PluginReturn(boolean success) {
|
||||
this();
|
||||
this.setSuccessCount(success ? 1 : 0);
|
||||
this.setFailCount(success ? 0 : 1);
|
||||
}
|
||||
|
||||
public PluginReturn(int successCount, int failCount) {
|
||||
this();
|
||||
this.setSuccessCount(successCount);
|
||||
this.setFailCount(failCount);
|
||||
}
|
||||
|
||||
public boolean hasRunTimeParams() {
|
||||
return (this.getRunTimeParams() == null || this.getRunTimeParams()
|
||||
.size() == 0) ? false : true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -235,7 +235,8 @@ public class HttpPlugin extends ParameterBarn {
|
|||
method.getResponseBodyAsString());
|
||||
}
|
||||
return new HttpReturn((responseCode % 100) < 4, responseCode,
|
||||
contentLength, contentType, responseHeaders);
|
||||
method.getURI().toString(), contentLength, contentType,
|
||||
responseHeaders);
|
||||
} catch (HttpException e) {
|
||||
Logger.getLogger(HttpPlugin.class).error(e, e);
|
||||
return new HttpReturn(false, 400, contentLength, contentType);
|
||||
|
|
|
@ -10,6 +10,7 @@ import org.bench4q.agent.plugin.basic.PluginReturn;
|
|||
*
|
||||
*/
|
||||
public class HttpReturn extends PluginReturn {
|
||||
private String url;
|
||||
private int statusCode;
|
||||
private long contentLength;
|
||||
private String contentType;
|
||||
|
@ -47,6 +48,14 @@ public class HttpReturn extends PluginReturn {
|
|||
this.headers = headers;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
private void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public HttpReturn(boolean success, int statusCode, long contentLength,
|
||||
String contentType) {
|
||||
super(success);
|
||||
|
@ -62,12 +71,12 @@ public class HttpReturn extends PluginReturn {
|
|||
* @param contentLength
|
||||
* @param contentType
|
||||
* @param responseHeaders
|
||||
* @param runTimeParams
|
||||
* !! to be removed
|
||||
*/
|
||||
public HttpReturn(boolean success, int responseCode, long contentLength,
|
||||
String contentType, Header[] responseHeaders) {
|
||||
public HttpReturn(boolean success, int responseCode, String url,
|
||||
long contentLength, String contentType, Header[] responseHeaders) {
|
||||
this(success, responseCode, contentLength, contentType);
|
||||
this.setHeaders(responseHeaders);
|
||||
this.setUrl(url);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,19 +5,19 @@ import java.util.Date;
|
|||
public class BehaviorResult {
|
||||
private String pluginId;
|
||||
private String pluginName;
|
||||
private int behaviorId;
|
||||
private String behaviorName;
|
||||
private Date startDate;
|
||||
private Date endDate;
|
||||
private long responseTime;
|
||||
private int successCount;
|
||||
private int failCount;
|
||||
private boolean shouldBeCountResponseTime;
|
||||
|
||||
private int behaviorId;
|
||||
private String behaviorUrl;
|
||||
private long contentLength;
|
||||
private int statusCode;
|
||||
private String contentType;
|
||||
private boolean shouldBeCountResponseTime;
|
||||
|
||||
public String getPluginId() {
|
||||
return pluginId;
|
||||
|
|
|
@ -152,6 +152,7 @@ public class VUser implements Runnable {
|
|||
Object plugin, Date startDate, PluginReturn pluginReturn,
|
||||
Date endDate) {
|
||||
BehaviorResult result = new BehaviorResult();
|
||||
result.setBehaviorId(behavior.getId());
|
||||
result.setStartDate(startDate);
|
||||
result.setEndDate(endDate);
|
||||
result.setSuccessCount(pluginReturn.getSuccessCount());
|
||||
|
@ -164,7 +165,6 @@ public class VUser implements Runnable {
|
|||
result.setShouldBeCountResponseTime(behavior.shouldBeCount());
|
||||
if (pluginReturn instanceof HttpReturn) {
|
||||
HttpReturn httpReturn = (HttpReturn) pluginReturn;
|
||||
result.setBehaviorId(behavior.getId());
|
||||
// TODO: this param in result is not Appropriate
|
||||
result.setBehaviorUrl(behavior.getSpecificParamValue("url"));
|
||||
result.setContentLength(httpReturn.getContentLength());
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package org.bench4q.agent.test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
package org.bench4q.agent.test.plugin;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.bench4q.agent.plugin.basic.HBasePlugin.HBasePlugin;
|
||||
import org.bench4q.agent.plugin.basic.HBasePlugin.HBaseReturn;
|
||||
import org.bench4q.agent.scenario.Scenario;
|
||||
import org.bench4q.agent.test.TestBase;
|
||||
import org.bench4q.share.helper.MarshalHelper;
|
||||
import org.bench4q.share.helper.TestHelper;
|
||||
import org.bench4q.share.models.agent.ParameterModel;
|
||||
import org.bench4q.share.models.agent.RunScenarioModel;
|
||||
import org.bench4q.share.models.agent.scriptrecord.BehaviorModel;
|
||||
import org.bench4q.share.models.agent.scriptrecord.UsePluginModel;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations = { "classpath:application-context.xml" })
|
||||
public class Test_HBasePlugin extends TestBase {
|
||||
HBasePlugin hBase = new HBasePlugin("133.133.134.188", "133.133.13.154",
|
||||
"/home/Xinsheng/hbase/tmp/zookeeper_data", "133.133.134.188",
|
||||
"users");
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
HBaseReturn result = this.hBase.insert("123", "chentienan");
|
||||
assertTrue(result.getSuccessCount() > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testQuery() {
|
||||
HBaseReturn result = this.hBase.query("123");
|
||||
assertTrue(result.getSuccessCount() > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGenerateHBaseScenario() throws IOException {
|
||||
BehaviorModel[] behaviors = new BehaviorModel[19];
|
||||
for (int i = 0; i < 9; i++) {
|
||||
behaviors[2 * i] = BehaviorModel.ControlBehaviorBuilder(2 * i,
|
||||
"Next", "UUID_0", Collections.<ParameterModel> emptyList());
|
||||
behaviors[2 * i + 1] = BehaviorModel
|
||||
.UserBehaviorBuilder(
|
||||
2 * i + 1,
|
||||
"Insert",
|
||||
"HBasePlugin_0",
|
||||
Arrays.asList(
|
||||
ParameterModel.createParameter("key",
|
||||
"${UUID_0:var}"),
|
||||
ParameterModel
|
||||
.createParameter(
|
||||
"value",
|
||||
"828731929090399688663513844419156517791913487136162075054396888608979390802698967398774976538053071265086303536432973027547398485897859650637839199967916419278859657562410371550970990533755543895317958490879810955359859803793616914752497927102101107393602107374624265703167902037562601756290624400217677905796841586506540830996528039667809341170671731917392828543425909887469350859806312812589702773082295018742634842159778009485901428286815715514440370336211621120027294867866046842579395402354849290925687231979896816952130161564546780855710443002842992917011602246580128072986737704758180050405202976240171827695507627799312781883033823819663102843159141022325482803101497005554269652897365593399081219143594918151989844361363454642099858085072470136971359171934346214072016627940215525657780835264287095014748952849011967941296078931973149033644269161629346531549579584063826798825958153903463232155174301997795504543310963155667642944030315802981522872371957377604512253881055347955240594154853114826089693318722619283530276507503")));
|
||||
}
|
||||
behaviors[18] = BehaviorModel.TimerBehaviorBuilder(28, "Sleep",
|
||||
"Timer_0",
|
||||
Arrays.asList(ParameterModel.createParameter("time", "10")));
|
||||
RunScenarioModel runScenarioModel = buildRunScenarioModelWith(
|
||||
Arrays.asList(
|
||||
new UsePluginModel("Timer_0", "ConstantTimer",
|
||||
Collections.<ParameterModel> emptyList()),
|
||||
new UsePluginModel("UUID_0", "UUID", null),
|
||||
new UsePluginModel("Context_0", "Context", null),
|
||||
new UsePluginModel(
|
||||
"HBasePlugin_0",
|
||||
"HBase",
|
||||
Arrays.asList(
|
||||
ParameterModel.createParameter(
|
||||
"dnsServer", "133.133.134.188"),
|
||||
ParameterModel.createParameter(
|
||||
"zookeeperQuorum",
|
||||
"133.133.13.154"),
|
||||
ParameterModel
|
||||
.createParameter(
|
||||
"zookeeperDataDir",
|
||||
"/home/Xinsheng/hbase/tmp/zookeeper_data"),
|
||||
ParameterModel.createParameter(
|
||||
"masterAdrress",
|
||||
"133.133.134.188"),
|
||||
ParameterModel.createParameter(
|
||||
"tableName", "users")))),
|
||||
behaviors);
|
||||
File file = new File("Scripts" + System.getProperty("file.separator")
|
||||
+ "hbaseScenario.xml");
|
||||
TestHelper.createFileIfNotExist(file);
|
||||
FileUtils.writeStringToFile(file,
|
||||
MarshalHelper.tryMarshal(runScenarioModel));
|
||||
createVUser(Scenario.scenarioBuilderWithCompile(runScenarioModel),
|
||||
UUID.randomUUID()).run();
|
||||
}
|
||||
}
|
|
@ -34,7 +34,7 @@ public class Test_Scenario extends TestBase {
|
|||
private static final String TEST_CASE = "${csvProvider0:userName}$#okOrNot${file.separator}";
|
||||
|
||||
@Test
|
||||
public void test_RealScenario() throws IOException {
|
||||
public void test_GenerateMongoScenario() throws IOException {
|
||||
BehaviorModel[] behaviors = new BehaviorModel[28];
|
||||
for (int i = 0; i < 9; i++) {
|
||||
behaviors[3 * i] = BehaviorModel
|
||||
|
|
Loading…
Reference in New Issue