make update tests more extensive
diff --git a/pregelix/pregelix-example/src/test/java/edu/uci/ics/pregelix/example/UpdateVertex.java b/pregelix/pregelix-example/src/test/java/edu/uci/ics/pregelix/example/UpdateVertex.java
index 9629b5b..998788a 100644
--- a/pregelix/pregelix-example/src/test/java/edu/uci/ics/pregelix/example/UpdateVertex.java
+++ b/pregelix/pregelix-example/src/test/java/edu/uci/ics/pregelix/example/UpdateVertex.java
@@ -26,29 +26,52 @@
* @author yingyib
*/
public class UpdateVertex extends Vertex<VLongWritable, Text, FloatWritable, VLongWritable> {
+ private final long MAX_VALUE_SIZE = 32768 / 2;
+ private VLongWritable msg = new VLongWritable();
+ private Text tempValue = new Text();
@Override
public void compute(Iterator<VLongWritable> msgIterator) throws Exception {
- if (getSuperstep() < 14) {
- Text value = getVertexValue();
- String newValue = value.toString() + value.toString();
- value.set(newValue);
- activate();
- } else if (getSuperstep() >= 14 && getSuperstep() < 28) {
- Text value = getVertexValue();
- String valueStr = value.toString();
- char[] valueChars = valueStr.toCharArray();
- if (valueChars.length <= 1) {
- throw new IllegalStateException("illegal value length: " + valueChars.length);
- }
- char[] newValueChars = new char[valueChars.length / 2];
- for (int i = 0; i < newValueChars.length; i++) {
- newValueChars[i] = valueChars[i];
- }
- value.set(new String(newValueChars));
- activate();
+ if (getSuperstep() == 1) {
+ updateAndSendMsg();
+ } else if (getSuperstep() > 1 && getSuperstep() < 30) {
+ verifyVertexSize(msgIterator);
+ updateAndSendMsg();
} else {
voteToHalt();
}
}
+
+ private void verifyVertexSize(Iterator<VLongWritable> msgIterator) {
+ /**
+ * verify the size
+ */
+ int valueSize = getVertexValue().getLength();
+ long expectedValueSize = msgIterator.next().get();
+ if (valueSize != expectedValueSize) {
+ throw new IllegalStateException("verte value size:" + valueSize + ", expected value size:"
+ + expectedValueSize);
+ }
+ }
+
+ private void updateAndSendMsg() {
+ long newValueSize = (long) (Math.random()) % MAX_VALUE_SIZE;
+ msg.set(newValueSize);
+ char[] charArray = new char[(int) newValueSize];
+ for (int i = 0; i < charArray.length; i++) {
+ charArray[i] = 'a';
+ }
+ /**
+ * set the vertex value
+ */
+ tempValue.set(new String(charArray));
+ setVertexValue(tempValue);
+
+ /**
+ * send a self-message
+ */
+ msg.set(newValueSize);
+ sendMsg(getVertexId(), msg);
+ activate();
+ }
}
diff --git a/pregelix/pregelix-example/src/test/java/edu/uci/ics/pregelix/example/UpdateVertexOutputFormat.java b/pregelix/pregelix-example/src/test/java/edu/uci/ics/pregelix/example/UpdateVertexOutputFormat.java
index 5c16302..493a33e 100644
--- a/pregelix/pregelix-example/src/test/java/edu/uci/ics/pregelix/example/UpdateVertexOutputFormat.java
+++ b/pregelix/pregelix-example/src/test/java/edu/uci/ics/pregelix/example/UpdateVertexOutputFormat.java
@@ -47,9 +47,6 @@
public void writeVertex(Vertex<VLongWritable, Text, FloatWritable, ?> vertex) throws IOException,
InterruptedException {
int len = vertex.getVertexValue().toString().toCharArray().length;
- if (len != 1) {
- throw new IllegalStateException("invalid value length: " + len);
- }
getRecordWriter().write(new Text(vertex.getVertexId().toString()), new Text(Integer.toString(len)));
}
}