jam/test/test-cluster.js

73 lines
1.5 KiB
JavaScript
Raw Normal View History

2024-08-27 00:15:47 +02:00
// jamsh test-cluster.js
var workers = cluster({
connect:true,
rows:2,
cols:2,
port0:11001,
port1:10001,
portn:100,
proto:['http','udp'],
poll:2000,
todo:'start()',
verbose:1,
});
workers.start()
var loop=0;
later(2000,function () {
// if (loop==3) workers.restart();
// if (loop==6) workers.stop();
print (workers.report());
loop++;
return true;
});
var p1=port(DIR.IP('udp://localhost:12000'));
later(500,function () {
connect(DIR.IP('udp://localhost:10002'))
});
function walker(test) {
this.next="init";
this.goto=null;
this.test=test;
this.t0=0;
this.hops=0;
this.dirs=[DIR.EAST,DIR.SOUTH,DIR.WEST,DIR.NORTH];
this.act = {
init:function () {
this.t0=time();
if (!this.test) { log('Starting on '+myNode()); log(myPosition()); }
var next=link(DIR.IP('%'))
if (next && next.length) this.goto=DIR.NODE(next[0]);
if (!this.test) log(next)
},
move: function () {
this.hops++;
if (!this.test) log('Going to '+this.goto);
moveto(this.goto);
},
sense: function () {
var next;
if (!this.test) log('I am on '+myNode());
next=this.dirs.shift();
this.goto=next;
if (!this.test) sleep(1000)
},
end: function () { log('END '+(time()-this.t0)+'ms '+this.hops+' hops'); kill() }
}
this.trans = {
init:"move",
move:"sense",
sense:function () { return this.goto?"move":"end" }
}
}
later(3000,function () {
create(walker,[true],2);
})
start();