From 2768a1cae4ef9a86bd78c98531c035c903c4b063 Mon Sep 17 00:00:00 2001 From: "yihua.huang" Date: Sat, 1 Mar 2014 15:10:38 +0800 Subject: [PATCH] add test for cycleTriedTimes and fix cycleTriedTimes inc error #60 --- pom.xml | 5 ++++ .../avalon/web/DashBoardController.java | 2 +- webmagic-core/pom.xml | 5 ++++ .../downloader/HttpClientDownloader.java | 2 +- .../downloader/HttpClientDownloaderTest.java | 25 ++++++++++++++----- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index 1741aca..96b27fa 100644 --- a/pom.xml +++ b/pom.xml @@ -106,6 +106,11 @@ log4j 1.2.17 + + org.assertj + assertj-core + 1.5.0 + org.apache.commons commons-lang3 diff --git a/webmagic-avalon/src/main/java/us/codecraft/webmagic/avalon/web/DashBoardController.java b/webmagic-avalon/src/main/java/us/codecraft/webmagic/avalon/web/DashBoardController.java index 9c92428..3ef2a86 100644 --- a/webmagic-avalon/src/main/java/us/codecraft/webmagic/avalon/web/DashBoardController.java +++ b/webmagic-avalon/src/main/java/us/codecraft/webmagic/avalon/web/DashBoardController.java @@ -12,7 +12,7 @@ import org.springframework.web.servlet.ModelAndView; public class DashBoardController { @RequestMapping - public ModelAndView create() { + public ModelAndView index() { ModelAndView map = new ModelAndView("dashboard"); return map; } diff --git a/webmagic-core/pom.xml b/webmagic-core/pom.xml index e64b865..6f7a02f 100644 --- a/webmagic-core/pom.xml +++ b/webmagic-core/pom.xml @@ -55,6 +55,11 @@ htmlcleaner + + org.assertj + assertj-core + + org.jsoup jsoup diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/downloader/HttpClientDownloader.java b/webmagic-core/src/main/java/us/codecraft/webmagic/downloader/HttpClientDownloader.java index d60ab5c..c036e34 100644 --- a/webmagic-core/src/main/java/us/codecraft/webmagic/downloader/HttpClientDownloader.java +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/downloader/HttpClientDownloader.java @@ -156,7 +156,7 @@ public class HttpClientDownloader implements Downloader { if (cycleTriedTimes >= site.getCycleRetryTimes()) { return null; } - page.addTargetRequest(request.setPriority(0).putExtra(Request.CYCLE_TRIED_TIMES, 1)); + page.addTargetRequest(request.setPriority(0).putExtra(Request.CYCLE_TRIED_TIMES, cycleTriedTimes)); } return page; } diff --git a/webmagic-core/src/test/java/us/codecraft/webmagic/downloader/HttpClientDownloaderTest.java b/webmagic-core/src/test/java/us/codecraft/webmagic/downloader/HttpClientDownloaderTest.java index b371f3f..ac01926 100644 --- a/webmagic-core/src/test/java/us/codecraft/webmagic/downloader/HttpClientDownloaderTest.java +++ b/webmagic-core/src/test/java/us/codecraft/webmagic/downloader/HttpClientDownloaderTest.java @@ -1,17 +1,18 @@ package us.codecraft.webmagic.downloader; -import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; import us.codecraft.webmagic.Page; import us.codecraft.webmagic.Request; import us.codecraft.webmagic.Site; +import us.codecraft.webmagic.Task; import us.codecraft.webmagic.selector.Html; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertTrue; + /** - * Author: code4crafer@gmail.com - * Date: 13-6-18 - * Time: 上午8:22 + * @author code4crafer@gmail.com */ public class HttpClientDownloaderTest { @@ -21,14 +22,26 @@ public class HttpClientDownloaderTest { Site site = Site.me().setDomain("www.diandian.com").addCookie("t", "43ztv9srfszl99yxv2aumx3zr7el7ybb"); HttpClientDownloader httpClientDownloader = new HttpClientDownloader(); Page download = httpClientDownloader.download(new Request("http://www.diandian.com"), site.toTask()); - Assert.assertTrue(download.getHtml().toString().contains("flashsword30")); + assertTrue(download.getHtml().toString().contains("flashsword30")); } @Test public void testDownloader() { HttpClientDownloader httpClientDownloader = new HttpClientDownloader(); Html html = httpClientDownloader.download("http://www.oschina.net"); - Assert.assertTrue(!html.getText().isEmpty()); + assertTrue(!html.getText().isEmpty()); + } + + @Test + public void testCycleTriedTimes() { + HttpClientDownloader httpClientDownloader = new HttpClientDownloader(); + Task task = Site.me().setDomain("localhost").setCycleRetryTimes(5).toTask(); + Request request = new Request("http://localhost/404"); + Page page = httpClientDownloader.download(request, task); + assertThat(page.getTargetRequests().size() > 0); + assertThat((Integer) page.getTargetRequests().get(0).getExtra(Request.CYCLE_TRIED_TIMES)).isEqualTo(1); + page = httpClientDownloader.download(page.getTargetRequests().get(0), task); + assertThat((Integer) page.getTargetRequests().get(0).getExtra(Request.CYCLE_TRIED_TIMES)).isEqualTo(2); } }