wip on persistence tests
This commit is contained in:
@@ -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
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user