Package org.playorm.cron.test

Source Code of org.playorm.cron.test.TestEpochOffset

package org.playorm.cron.test;

import java.util.HashMap;
import java.util.Map;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.playorm.cron.api.CronService;
import org.playorm.cron.api.CronServiceFactory;
import org.playorm.cron.api.PlayOrmCronJob;
import org.playorm.cron.bindings.CronProdBindings;

import com.alvazan.orm.api.base.NoSqlEntityManager;
import com.alvazan.orm.api.base.NoSqlEntityManagerFactory;
import com.alvazan.test.FactorySingleton;

public class TestEpochOffset {

  private CronService server1Monitor;
  private Runnable clusterChecker1;
  private NoSqlEntityManagerFactory factory;
  private MockListener listener1;
  private MockHash mockHash;
  private MockTime mockTime;

  @Before
  public void setup() {
    factory = FactorySingleton.createFactoryOnce();
    MockScheduler mock = new MockScheduler();
    mockHash = new MockHash();
    listener1 = new MockListener();
    mockTime = new MockTime();
   
    int rate = 1000;
   
    Map<String, Object> props = new HashMap<String, Object>();
    props.put(CronServiceFactory.NOSQL_MGR_FACTORY, factory);
    props.put(CronProdBindings.SCHEDULER, mock);
    props.put(CronProdBindings.HASH_GENERATOR, mockHash);
    props.put(CronProdBindings.CURRENT_TIME, mockTime);
    props.put(CronServiceFactory.SCAN_RATE_MILLIS, ""+rate);
    props.put(CronServiceFactory.HOST_UNIQUE_NAME, "host1");
    server1Monitor = CronServiceFactory.create(props);
    server1Monitor.addListener(listener1);
   
    server1Monitor.start();
    clusterChecker1 = mock.getLastRunnable();
   
    mockHash.addReturnValue(0); //identify the first server and run server 1
    mockTime.addReturnTime(15000);
    clusterChecker1.run();
    Assert.assertNull(listener1.getLastFiredMonitor());
  }

  @After
  public void clearDatabase() {
    NoSqlEntityManager other = factory.createEntityManager();
    other.clearDatabase(true);
  }
 
  @Test
  public void testOffsetFromEpoch() throws InterruptedException {
    PlayOrmCronJob monitor = new PlayOrmCronJob();
    monitor.setId("coolMon");
    monitor.setEpochOffset(3000L);
    monitor.setTimePeriodMillis(10000);
    monitor.addProperty("email", "dean@xsoftware");
    monitor.addProperty("myName", "dean");
    server1Monitor.saveMonitor(monitor);

    PlayOrmCronJob m = server1Monitor.getMonitor(monitor.getId());
    Assert.assertEquals(monitor.getTimePeriodMillis(), m.getTimePeriodMillis());
    String email1 = monitor.getProperties().get("email");
    String emailB = m.getProperties().get("email");
    Assert.assertEquals(email1, emailB);

    mockTime.addReturnTime(32000);
    mockHash.addReturnValue(0); //identify the first server and run server 1
    clusterChecker1.run();
    Assert.assertNull(listener1.getLastFiredMonitor());

    mockTime.addReturnTime(32600);
    mockHash.addReturnValue(0); //identify the first server and run server 1
    clusterChecker1.run();   

    PlayOrmCronJob job = listener1.getLastFiredMonitor();
    Assert.assertEquals(monitor.getId(), job.getId());
   
    mockTime.addReturnTime(39000);
    mockHash.addReturnValue(0); //identify the first server and run server 1
    clusterChecker1.run();
    Assert.assertNull(listener1.getLastFiredMonitor());   
   
    mockTime.addReturnTime(50000);
    mockHash.addReturnValue(0); //identify the first server and run server 1
    clusterChecker1.run();
   
    PlayOrmCronJob job2 = listener1.getLastFiredMonitor();
    Assert.assertEquals(monitor.getId(), job2.getId());
  }
}
TOP

Related Classes of org.playorm.cron.test.TestEpochOffset

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.