and observe the distribution order .. hands on. + add test/DATA to gitignorpull/77/head
parent
de5c873e38
commit
585d2a6441
@ -0,0 +1,80 @@
|
||||
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++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in new issue