package net.yacy.peers; import java.io.File; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import net.yacy.cora.document.encoding.ASCII; import net.yacy.kelondro.data.word.Word; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; public class NewsPoolTest { static NewsPool newsPool; public NewsPoolTest() { } @BeforeClass public static void setUpClass() { String networkpath = "test/DATA/INDEX/webportal/NETWORK"; newsPool = new NewsPool(new File(networkpath), false, true); } @AfterClass public static void tearDownClass() { newsPool.close(); } /** * Test of myPublication method, of class NewsPool. */ @Test public void testMyPublication() throws Exception { // create a test seed as sender ConcurrentMap<String, String> dna = new ConcurrentHashMap<String, String>(); byte[] hash = Word.word2hash("myseed"); // just generate any hash for testing Seed myseed = new Seed(ASCII.String(hash), dna); // generate 3 test messages and simulate publish (put in outgoing queuq Map<String, String> msgattr = new HashMap(); for (int i = 1; i <= 3; i++) { msgattr.put("text", "message " + Integer.toString(i)); msgattr.put("#", Integer.toString(i)); // use id modificator attribute (to generate unique id for same creation second, used in id) newsPool.publishMyNews(myseed, "TestCat", msgattr); // add msg to outgoing queue } // test the distribution process Set<String> resultmemory = new LinkedHashSet(); NewsDB.Record rec = newsPool.myPublication(); int cnt = 3 * 30 + 5; // end condition (3 msg * 30 distribution) for loop (+5 > as expected count) while (rec != null && cnt > 0) { // System.out.println(rec.toString()); assertTrue(rec.distributed() > 0); resultmemory.add(rec.id()); cnt--; rec = newsPool.myPublication(); } assertTrue(cnt == 5); // test total counter // test news record in published queue cnt = 1; for (String msgid : resultmemory) { NewsDB.Record msg = newsPool.getByID(NewsPool.PUBLISHED_DB, msgid); System.out.println(cnt + ". news published: \"" + msg.attribute("text", "***missing***") + "\" distributed=" + msg.distributed()); assertEquals("default distributin count", 30, msg.distributed()); // test expected distribution count cnt++; } } }