Improved feedhandler test

This commit is contained in:
daniel oeh 2012-09-01 17:01:02 +02:00
parent 6b14014b66
commit d4147fd907

View File

@ -23,7 +23,8 @@ public class FeedHandlerTest extends AndroidTestCase {
private static final String TAG = "FeedHandlerTest"; private static final String TAG = "FeedHandlerTest";
private static final String FEEDS_DIR = "testfeeds"; private static final String FEEDS_DIR = "testfeeds";
private static final String[] rssUrls = { private static final String[] urls = {
"http://bitlove.org/ranzzeit/ranz/feed",
"http://bitlove.org/importthis/mp3/feed", "http://bitlove.org/importthis/mp3/feed",
"http://bitlove.org/astro/youtube/feed", "http://bitlove.org/astro/youtube/feed",
"http://bitlove.org/channelcast/channelcast/feed", "http://bitlove.org/channelcast/channelcast/feed",
@ -371,29 +372,16 @@ public class FeedHandlerTest extends AndroidTestCase {
"http://bitlove.org/wunderlich/podcast/feed", "http://bitlove.org/wunderlich/podcast/feed",
"http://www.cczwei.de/rss_tvissues.php" }; "http://www.cczwei.de/rss_tvissues.php" };
private static final String[] atomUrls = { private ArrayList<Feed> feeds;
};
private ArrayList<Feed> rssFeeds;
private ArrayList<Feed> atomFeeds;
protected void setUp() throws Exception { protected void setUp() throws Exception {
super.setUp(); super.setUp();
rssFeeds = new ArrayList<Feed>(); feeds = new ArrayList<Feed>();
for (int i = 0; i < rssUrls.length; i++) { for (int i = 0; i < urls.length; i++) {
Feed f = new Feed(rssUrls[i], new Date()); Feed f = new Feed(urls[i], new Date());
f.setFile_url(new File(getContext().getExternalFilesDir(FEEDS_DIR) f.setFile_url(new File(getContext().getExternalFilesDir(FEEDS_DIR)
.getAbsolutePath(), "R" + i).getAbsolutePath()); .getAbsolutePath(), "R" + i).getAbsolutePath());
rssFeeds.add(f); feeds.add(f);
}
atomFeeds = new ArrayList<Feed>();
for (int i = 0; i < atomUrls.length; i++) {
Feed f = new Feed(atomUrls[i], new Date());
f.setFile_url(new File(getContext().getExternalFilesDir(FEEDS_DIR)
.getAbsolutePath(), "A" + i).getAbsolutePath());
atomFeeds.add(f);
} }
} }
@ -410,18 +398,42 @@ public class FeedHandlerTest extends AndroidTestCase {
} }
private void downloadFeed(Feed feed) throws IOException { private void downloadFeed(Feed feed) throws IOException {
InputStream in = getInputStream(feed.getDownload_url()); int num_retries = 2;
boolean successful = false;
for (int i = 0; i < num_retries; i++) {
InputStream in = null;
OutputStream out = null;
try {
in = getInputStream(feed.getDownload_url());
assertNotNull(in); assertNotNull(in);
OutputStream out = new BufferedOutputStream(new FileOutputStream( out = new BufferedOutputStream(new FileOutputStream(
feed.getFile_url())); feed.getFile_url()));
byte[] buffer = new byte[8 * 1024]; byte[] buffer = new byte[8 * 1024];
int count = 0; int count = 0;
while ((count = in.read(buffer)) != -1) { while ((count = in.read(buffer)) != -1) {
out.write(buffer, 0, count); out.write(buffer, 0, count);
} }
successful = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
in.close(); in.close();
}
if (out != null) {
out.close(); out.close();
} }
if (successful) {
break;
}
}
}
if (!successful) {
Log.e(TAG, "Download failed after " + num_retries + " retries");
throw new IOException();
}
}
private boolean isFeedValid(Feed feed) { private boolean isFeedValid(Feed feed) {
Log.i(TAG, "Checking if " + feed.getDownload_url() + " is valid"); Log.i(TAG, "Checking if " + feed.getDownload_url() + " is valid");
@ -458,22 +470,14 @@ public class FeedHandlerTest extends AndroidTestCase {
return true; return true;
} }
public void testParseRSS() { public void testParseFeeds() {
Log.i(TAG, "Testing RSS feeds"); Log.i(TAG, "Testing RSS feeds");
for (Feed feed : rssFeeds) { for (Feed feed : feeds) {
parseFeed(feed); parseFeed(feed);
} }
Log.i(TAG, "RSS Test completed"); Log.i(TAG, "RSS Test completed");
} }
public void testParseAtom() {
Log.i(TAG, "Testing Atom feeds");
for (Feed feed : atomFeeds) {
parseFeed(feed);
}
Log.i(TAG, "Atom Test completed");
}
private void parseFeed(Feed feed) { private void parseFeed(Feed feed) {
try { try {
Log.i(TAG, "Testing feed with url " + feed.getDownload_url()); Log.i(TAG, "Testing feed with url " + feed.getDownload_url());
@ -491,11 +495,7 @@ public class FeedHandlerTest extends AndroidTestCase {
@Override @Override
protected void tearDown() throws Exception { protected void tearDown() throws Exception {
super.tearDown(); super.tearDown();
for (Feed feed : rssFeeds) { for (Feed feed : feeds) {
File f = new File(feed.getFile_url());
f.delete();
}
for (Feed feed : atomFeeds) {
File f = new File(feed.getFile_url()); File f = new File(feed.getFile_url());
f.delete(); f.delete();
} }