wip on persistence tests

This commit is contained in:
Zlatin Balevsky
2018-07-20 20:55:05 +01:00
parent 206ee8a8dc
commit b86f81159e
2 changed files with 78 additions and 22 deletions

View File

@@ -19,7 +19,7 @@ class PersisterService {
final Timer timer
final def fileSource
PersisterService(File location, EventBus listener, int interval, def FileSource) {
PersisterService(File location, EventBus listener, int interval, def fileSource) {
this.location = location
this.listener = listener
this.interval = interval

View File

@@ -1,5 +1,6 @@
package com.muwire.core.files
import org.junit.Before
import org.junit.Test
import com.muwire.core.EventBus
@@ -10,20 +11,51 @@ import groovy.json.JsonOutput
import groovy.util.GroovyTestCase
import net.i2p.data.Base32
class PersisterServiceTest extends GroovyTestCase {
class PersisterServiceTest {
@Test
void testName() {
File sharedDir = new File("sharedDir")
class Listener {
def publishedFiles = []
def onFileLoadedEvent(FileLoadedEvent e) {
publishedFiles.add(e.loadedFile)
}
}
EventBus eventBus
Listener listener
File sharedDir
File sharedFile1
@Before
void setup() {
eventBus = new EventBus()
listener = new Listener()
eventBus.register(FileLoadedEvent.class, listener)
sharedDir = new File("sharedDir")
sharedDir.mkdir()
sharedDir.deleteOnExit()
File sharedFile1 = new File(sharedDir,"file1")
sharedFile1 = new File(sharedDir,"file1")
sharedFile1.deleteOnExit()
}
private void writeToSharedFile(int size) {
FileOutputStream fos = new FileOutputStream(sharedFile1);
fos.write new byte[1]
fos.write new byte[size]
fos.close()
}
private File initPersisted() {
File persisted = new File("persisted")
if (persisted.exists())
persisted.delete()
persisted.deleteOnExit()
persisted
}
@Test
void test1SharedFile1Piece() {
writeToSharedFile(1)
FileHasher fh = new FileHasher()
InfoHash ih1 = fh.hashFile(sharedFile1)
@@ -35,29 +67,53 @@ class PersisterServiceTest extends GroovyTestCase {
json = JsonOutput.toJson(json)
File persisted = new File("persisted")
if (persisted.exists())
persisted.delete()
persisted.deleteOnExit()
File persisted = initPersisted()
persisted.write json
SharedFile loadedFile
def eventListener = new Object() {
def onFileLoadedEvent(FileLoadedEvent e) {
loadedFile = e.loadedFile
}
}
EventBus eventBus = new EventBus()
eventBus.register(FileLoadedEvent.class, eventListener)
PersisterService ps = new PersisterService(persisted, eventBus, 100, null)
ps.start()
Thread.sleep(2000)
assert listener.publishedFiles.size() == 1
def loadedFile = listener.publishedFiles[0]
assert loadedFile != null
assert loadedFile.file == sharedFile1.getCanonicalFile()
assert loadedFile.infoHash == ih1
}
@Test
public void test1SharedFile2Pieces() {
writeToSharedFile((0x1 << 18) + 1)
FileHasher fh = new FileHasher()
InfoHash ih1 = fh.hashFile(sharedFile1)
assert ih1.getHashList().length == 2 * 32
def json = [:]
json.file = sharedFile1.getCanonicalFile().toString()
json.length = sharedFile1.length()
json.infoHash = Base32.encode ih1.getRoot()
byte [] tmp = new byte[32]
System.arraycopy(ih1.getHashList(), 0, tmp, 0, 32)
String hash1 = Base32.encode(tmp)
System.arraycopy(ih1.getHashList(), 32, tmp, 0, 32)
String hash2 = Base32.encode(tmp)
json.hashList = [hash1, hash2]
json = JsonOutput.toJson(json)
File persisted = initPersisted()
persisted.write json
PersisterService ps = new PersisterService(persisted, eventBus, 100, null)
ps.start()
Thread.sleep(2000)
assert listener.publishedFiles.size() == 1
def loadedFile = listener.publishedFiles[0]
assert loadedFile != null
assert loadedFile.file == sharedFile1.getCanonicalFile()
assert loadedFile.infoHash == ih1
}
}