package us.codecraft.webmagic.scheduler;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import us.codecraft.webmagic.Request;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Task;
/**
* @author sai
* Created by sai on 16-7-5.
*/
public class RedisPrioritySchedulerTest
{
private RedisPriorityScheduler scheduler;
@Before
public void setUp()
{
scheduler = new RedisPriorityScheduler("localhost");
}
@Ignore("environment depended")
@Test
public void test()
{
Task task = new Task() {
@Override
public String getUUID() {
return "TestTask";
}
@Override
public Site getSite() {
return null;
}
};
scheduler.resetDuplicateCheck(task);
Request request = new Request("https://www.google.com");
Request request1= new Request("https://www.facebook.com/");
Request request2= new Request("https://twitter.com");
request.setPriority(1).putExtra("name", "google");
request1.setPriority(0).putExtra("name", "facebook");
request2.setPriority(-1).putExtra("name", "twitter");
scheduler.push(request, task);
scheduler.push(request1, task);
scheduler.push(request2, task);
Request GRequest = scheduler.poll(task);
Request FBRequest = scheduler.poll(task);
Request TRequest = scheduler.poll(task);
Assert.assertEquals(GRequest.getUrl(), request.getUrl());
Assert.assertEquals(GRequest.getExtra("name"), request.getExtra("name"));
Assert.assertEquals(FBRequest.getUrl(), request1.getUrl());
Assert.assertEquals(FBRequest.getExtra("name"), request.getExtra("name"));
Assert.assertEquals(TRequest.getUrl(), request2.getUrl());
Assert.assertEquals(TRequest.getExtra("name"), request.getExtra("name"));
}
}