test (à clean), essai de diffusion asynchrone qui utilise le scheluder dans CapteurImpl
This commit is contained in:
92
src/test/TestAlgoDiffusionEpoq.java
Normal file
92
src/test/TestAlgoDiffusionEpoq.java
Normal file
@@ -0,0 +1,92 @@
|
||||
package test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
|
||||
|
||||
import impl.Afficheur;
|
||||
import impl.Canal;
|
||||
import impl.CapteurImpl;
|
||||
import impl.DiffusionEpoque;
|
||||
import impl.Scheduler;
|
||||
|
||||
public class TestAlgoDiffusionEpoq {
|
||||
|
||||
static int NB_CANAUX = 3;
|
||||
public static List<Integer>[] rEpoq;
|
||||
|
||||
|
||||
@BeforeAll
|
||||
public static void testAtom() throws InterruptedException{
|
||||
|
||||
ArrayList<Integer>[] r = new ArrayList[NB_CANAUX];
|
||||
for(int i = 0; i<NB_CANAUX; i++){
|
||||
r[i] = new ArrayList<Integer>();
|
||||
}
|
||||
|
||||
Afficheur[] a = new Afficheur[NB_CANAUX];
|
||||
|
||||
Scheduler scheduler = new Scheduler(NB_CANAUX);
|
||||
CapteurImpl c = new CapteurImpl();
|
||||
c.setScheduler(scheduler.getScheculer());
|
||||
|
||||
DiffusionEpoque algo = new DiffusionEpoque();
|
||||
algo.capteur = c;
|
||||
c.setAlgoDiffusion(algo);
|
||||
|
||||
for(int i = 0; i<NB_CANAUX; i++){
|
||||
Afficheur afficheur = new Afficheur();
|
||||
afficheur.setId(i);
|
||||
a[i] = afficheur;
|
||||
Canal canal = new Canal(c, scheduler, afficheur);
|
||||
c.attach(canal);
|
||||
}
|
||||
|
||||
ScheduledExecutorService clock = scheduler.getScheculer();
|
||||
ScheduledFuture<?> future = clock.scheduleAtFixedRate(() -> c.tick(), 0, 500, TimeUnit.MILLISECONDS);
|
||||
|
||||
Thread.sleep(10000);
|
||||
System.out.println("STOP");
|
||||
System.out.println("waitting for lasts display...");
|
||||
future.cancel(false);
|
||||
Thread.sleep(3100); //3000ms max + 100ms de marge
|
||||
|
||||
clock.shutdown();
|
||||
//Thread.sleep(1500);
|
||||
|
||||
for(int i = 0; i<NB_CANAUX; i++){
|
||||
r[i] = a[i].vals;
|
||||
}
|
||||
rEpoq = r;
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void testAtomOracle(){
|
||||
boolean r = true;
|
||||
|
||||
|
||||
for(int i = 0; i< NB_CANAUX && r; i++){
|
||||
|
||||
int valTest = 0;
|
||||
System.out.println("canal " + i + ":");
|
||||
for(int j = 0; j< rEpoq[i].size() && r; j++){
|
||||
System.out.print(rEpoq[i].get(j));
|
||||
if(j<rEpoq[i].size()-1) System.out.print(", ");
|
||||
r = r && rEpoq[i].get(j)>valTest;
|
||||
valTest=rEpoq[i].get(j);
|
||||
}
|
||||
System.out.println(" ");
|
||||
}
|
||||
assertTrue(r);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user