package org.shanbo.feluca.distribute.model;
import gnu.trove.list.array.TFloatArrayList;
import java.util.List;
import java.util.concurrent.Future;
import org.shanbo.feluca.distribute.model.horizon.MModelLocal;
import org.shanbo.feluca.distribute.model.horizon.MModelClient;
import org.shanbo.feluca.distribute.model.horizon.MModelServer;
import org.shanbo.feluca.util.NetworkUtils;
import org.shanbo.feluca.util.concurrent.ConcurrentExecutor;
import com.google.common.collect.ImmutableList;
public class TestSyncModel {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
List<String> workers = ImmutableList.of(NetworkUtils.ipv4Host() + ":12030", NetworkUtils.ipv4Host() + ":12730");
MModelLocal model0 = new MModelLocal();
MModelServer server0 = new MModelServer(workers.get(0), "h", model0);
MModelClient mc0 = new MModelClient(workers, 0, model0);
MModelLocal model1 = new MModelLocal();
MModelServer server1 = new MModelServer(workers.get(1), "h", model1);
MModelClient mc1 = new MModelClient(workers, 1, model1);
//----------------------------------------
server0.start();
server1.start();
mc0.createVector("a", 10, 0, 0);
mc1.createVector("a", 10, 2, 0);
mc0.connect();
mc1.connect();
List<Future<Integer>> vectorUpdate0 = mc0.vectorUpdate("a", new int[]{0,2,4});
List<Future<Integer>> vectorUpdate1 = mc1.vectorUpdate("a", new int[]{1,3,5});
ConcurrentExecutor.get(vectorUpdate0);
ConcurrentExecutor.get(vectorUpdate1);
System.out.println(TFloatArrayList.wrap(mc0.getVector("a")).toString());
System.out.println(TFloatArrayList.wrap(mc1.getVector("a")).toString());
mc0.close();
mc1.close();
//-------------
server0.stop();
server1.stop();
}
}