Skip to content

Commit

Permalink
Add test case
Browse files Browse the repository at this point in the history
  • Loading branch information
王程明 committed Jun 17, 2017
1 parent f1846d6 commit 1d8b7a6
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 5 deletions.
10 changes: 5 additions & 5 deletions src/test/java/com/qiyi/mbd/meerkat/meter/Command.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ public int getId() {
static int counter = 0;

public Command() {
super( APPFusingConfig.class);
super(APPFusingConfig.class);
}

@Override
protected Optional<Integer> run() {
counter+=1;
if(counter%100>successRate){
counter += 1;
if (counter % 100 > successRate) {
return null;
} else {
return Optional.fromNullable(NORMAL_SUCCESS.getId());
Expand All @@ -46,14 +46,14 @@ protected Optional<Integer> run() {

@Override
protected Integer getFallback(boolean isFusing, Exception e) {
if(isFusing){
if (isFusing) {
return FUSING.getId();
} else {
return NORMAL_FAILURE.getId();
}
}

public FusingMeter getMeter(){
public FusingMeter getMeter() {
return this.meter;
}
}
46 changes: 46 additions & 0 deletions src/test/java/com/qiyi/mbd/meerkat/meter/MultiInstanceCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.qiyi.mbd.meerkat.meter;

import com.google.common.base.Optional;
import com.qiyi.mbd.meerkat.fusing.FusingCommand;
import com.qiyi.mbd.meerkat.fusing.FusingMeter;

/**
* Created by chengmingwang on 6/10/17.
*/
public class MultiInstanceCommand extends FusingCommand<Integer> {

private static final int successRateA = 100; //实例A成功率100%
private static final int successRateB = 60; //实例B成功率60%
private static int counterA = 0;
private static int counterB = 0;

private final String instance;

public MultiInstanceCommand(String instance) {
super(instance, APPFusingConfig.class);
this.instance = instance;
}

@Override
protected Optional<Integer> run() {
if(this.instance.equals("A")){
counterA += 1;
if (counterA % 100 >= successRateA) {
return null;
} else {
return Optional.fromNullable(1);
}
} else {
counterB += 1;
if (counterB % 100 >= successRateB) {
return null;
} else {
return Optional.fromNullable(1);
}
}
}

public FusingMeter getMeter() {
return this.meter;
}
}
18 changes: 18 additions & 0 deletions src/test/java/com/qiyi/mbd/meerkat/meter/OperationMeterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,24 @@ public void report() throws Exception {
}
}

@Test
public void multiInstanceTest() throws Exception {
for(int k=0; k<100; k++) {
MultiInstanceCommand cmdA = new MultiInstanceCommand("A");
MultiInstanceCommand cmdB = new MultiInstanceCommand("B");
cmdA.execute();
cmdB.execute();
}

Thread.sleep(1000*10); //默认统计周期是10秒
MultiInstanceCommand cmdA = new MultiInstanceCommand("A");
MultiInstanceCommand cmdB = new MultiInstanceCommand("B");
Assert.assertEquals(100.0, cmdA.getMeter().getValue());
Assert.assertEquals(60.0, cmdB.getMeter().getValue());


}

private long loopUntilStatusChanged(boolean fusingStatus, Command cmd){
long start = System.currentTimeMillis();
while(true){
Expand Down

0 comments on commit 1d8b7a6

Please sign in to comment.