mirror of https://github.com/zlatinb/muwire
more unit tests
parent
37909d5193
commit
92e5cc87ef
|
@ -1,5 +1,7 @@
|
|||
package com.muwire.core.connection
|
||||
|
||||
import static org.junit.Assert.fail
|
||||
|
||||
import java.util.concurrent.CopyOnWriteArrayList
|
||||
|
||||
import org.junit.After
|
||||
|
@ -13,6 +15,7 @@ import com.muwire.core.hostcache.HostCache
|
|||
import com.muwire.core.trust.TrustLevel
|
||||
import com.muwire.core.trust.TrustService
|
||||
|
||||
import groovy.json.JsonSlurper
|
||||
import groovy.mock.interceptor.MockFor
|
||||
|
||||
class ConnectionAcceptorTest {
|
||||
|
@ -111,4 +114,236 @@ class ConnectionAcceptorTest {
|
|||
assert event.endpoint.destination == destinations.dest1
|
||||
assert event.status == ConnectionAttemptStatus.SUCCESSFUL
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSuccessfulPeer() {
|
||||
settings = new MuWireSettings() {
|
||||
boolean isLeaf() {
|
||||
false
|
||||
}
|
||||
}
|
||||
i2pAcceptorMock.demand.accept {
|
||||
def is = new PipedInputStream()
|
||||
outputStream = new PipedOutputStream(is)
|
||||
def os = new PipedOutputStream()
|
||||
inputStream = new PipedInputStream(os)
|
||||
new Endpoint(destinations.dest1, is, os)
|
||||
}
|
||||
i2pAcceptorMock.demand.accept { Thread.sleep(Integer.MAX_VALUE) }
|
||||
connectionManagerMock.demand.hasPeerSlots() { true }
|
||||
trustServiceMock.demand.getLevel { dest ->
|
||||
assert dest == destinations.dest1
|
||||
TrustLevel.TRUSTED
|
||||
}
|
||||
|
||||
initMocks()
|
||||
|
||||
outputStream.write("MuWire peer".bytes)
|
||||
byte [] OK = new byte[2]
|
||||
def dis = new DataInputStream(inputStream)
|
||||
dis.readFully(OK)
|
||||
assert OK == "OK".bytes
|
||||
|
||||
Thread.sleep(50)
|
||||
assert connectionEvents.size() == 1
|
||||
def event = connectionEvents[0]
|
||||
assert event.endpoint.destination == destinations.dest1
|
||||
assert event.status == ConnectionAttemptStatus.SUCCESSFUL
|
||||
}
|
||||
|
||||
@Test
|
||||
void testLeafRejectsLeaf() {
|
||||
settings = new MuWireSettings() {
|
||||
boolean isLeaf() {
|
||||
true
|
||||
}
|
||||
}
|
||||
i2pAcceptorMock.demand.accept {
|
||||
def is = new PipedInputStream()
|
||||
outputStream = new PipedOutputStream(is)
|
||||
def os = new PipedOutputStream()
|
||||
inputStream = new PipedInputStream(os)
|
||||
new Endpoint(destinations.dest1, is, os)
|
||||
}
|
||||
i2pAcceptorMock.demand.accept { Thread.sleep(Integer.MAX_VALUE) }
|
||||
trustServiceMock.demand.getLevel { dest ->
|
||||
assert dest == destinations.dest1
|
||||
TrustLevel.TRUSTED
|
||||
}
|
||||
|
||||
initMocks()
|
||||
|
||||
outputStream.write("MuWire leaf".bytes)
|
||||
outputStream.flush()
|
||||
Thread.sleep(50)
|
||||
assert inputStream.read() == -1
|
||||
|
||||
Thread.sleep(50)
|
||||
assert connectionEvents.size() == 1
|
||||
def event = connectionEvents[0]
|
||||
assert event.endpoint.destination == destinations.dest1
|
||||
assert event.status == ConnectionAttemptStatus.FAILED
|
||||
}
|
||||
|
||||
@Test
|
||||
void testLeafRejectsPeer() {
|
||||
settings = new MuWireSettings() {
|
||||
boolean isLeaf() {
|
||||
true
|
||||
}
|
||||
}
|
||||
i2pAcceptorMock.demand.accept {
|
||||
def is = new PipedInputStream()
|
||||
outputStream = new PipedOutputStream(is)
|
||||
def os = new PipedOutputStream()
|
||||
inputStream = new PipedInputStream(os)
|
||||
new Endpoint(destinations.dest1, is, os)
|
||||
}
|
||||
i2pAcceptorMock.demand.accept { Thread.sleep(Integer.MAX_VALUE) }
|
||||
trustServiceMock.demand.getLevel { dest ->
|
||||
assert dest == destinations.dest1
|
||||
TrustLevel.TRUSTED
|
||||
}
|
||||
|
||||
initMocks()
|
||||
|
||||
outputStream.write("MuWire peer".bytes)
|
||||
outputStream.flush()
|
||||
Thread.sleep(50)
|
||||
assert inputStream.read() == -1
|
||||
|
||||
Thread.sleep(50)
|
||||
assert connectionEvents.size() == 1
|
||||
def event = connectionEvents[0]
|
||||
assert event.endpoint.destination == destinations.dest1
|
||||
assert event.status == ConnectionAttemptStatus.FAILED
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPeerRejectsPeer() {
|
||||
settings = new MuWireSettings() {
|
||||
boolean isLeaf() {
|
||||
false
|
||||
}
|
||||
}
|
||||
i2pAcceptorMock.demand.accept {
|
||||
def is = new PipedInputStream()
|
||||
outputStream = new PipedOutputStream(is)
|
||||
def os = new PipedOutputStream()
|
||||
inputStream = new PipedInputStream(os)
|
||||
new Endpoint(destinations.dest1, is, os)
|
||||
}
|
||||
i2pAcceptorMock.demand.accept { Thread.sleep(Integer.MAX_VALUE) }
|
||||
connectionManagerMock.demand.hasPeerSlots() { false }
|
||||
trustServiceMock.demand.getLevel { dest ->
|
||||
assert dest == destinations.dest1
|
||||
TrustLevel.TRUSTED
|
||||
}
|
||||
hostCacheMock.ignore.getHosts { n -> [] }
|
||||
|
||||
initMocks()
|
||||
|
||||
outputStream.write("MuWire peer".bytes)
|
||||
byte [] OK = new byte[6]
|
||||
def dis = new DataInputStream(inputStream)
|
||||
dis.readFully(OK)
|
||||
assert OK == "REJECT".bytes
|
||||
|
||||
Thread.sleep(50)
|
||||
assert dis.read() == -1
|
||||
|
||||
Thread.sleep(50)
|
||||
assert connectionEvents.size() == 1
|
||||
def event = connectionEvents[0]
|
||||
assert event.endpoint.destination == destinations.dest1
|
||||
assert event.status == ConnectionAttemptStatus.REJECTED
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPeerRejectsLeaf() {
|
||||
settings = new MuWireSettings() {
|
||||
boolean isLeaf() {
|
||||
false
|
||||
}
|
||||
}
|
||||
i2pAcceptorMock.demand.accept {
|
||||
def is = new PipedInputStream()
|
||||
outputStream = new PipedOutputStream(is)
|
||||
def os = new PipedOutputStream()
|
||||
inputStream = new PipedInputStream(os)
|
||||
new Endpoint(destinations.dest1, is, os)
|
||||
}
|
||||
i2pAcceptorMock.demand.accept { Thread.sleep(Integer.MAX_VALUE) }
|
||||
connectionManagerMock.demand.hasLeafSlots() { false }
|
||||
trustServiceMock.demand.getLevel { dest ->
|
||||
assert dest == destinations.dest1
|
||||
TrustLevel.TRUSTED
|
||||
}
|
||||
hostCacheMock.ignore.getHosts { n -> [] }
|
||||
|
||||
initMocks()
|
||||
|
||||
outputStream.write("MuWire leaf".bytes)
|
||||
byte [] OK = new byte[6]
|
||||
def dis = new DataInputStream(inputStream)
|
||||
dis.readFully(OK)
|
||||
assert OK == "REJECT".bytes
|
||||
|
||||
Thread.sleep(50)
|
||||
assert dis.read() == -1
|
||||
|
||||
Thread.sleep(50)
|
||||
assert connectionEvents.size() == 1
|
||||
def event = connectionEvents[0]
|
||||
assert event.endpoint.destination == destinations.dest1
|
||||
assert event.status == ConnectionAttemptStatus.REJECTED
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPeerRejectsPeerSuggests() {
|
||||
settings = new MuWireSettings() {
|
||||
boolean isLeaf() {
|
||||
false
|
||||
}
|
||||
}
|
||||
i2pAcceptorMock.demand.accept {
|
||||
def is = new PipedInputStream()
|
||||
outputStream = new PipedOutputStream(is)
|
||||
def os = new PipedOutputStream()
|
||||
inputStream = new PipedInputStream(os)
|
||||
new Endpoint(destinations.dest1, is, os)
|
||||
}
|
||||
i2pAcceptorMock.demand.accept { Thread.sleep(Integer.MAX_VALUE) }
|
||||
connectionManagerMock.demand.hasPeerSlots() { false }
|
||||
trustServiceMock.demand.getLevel { dest ->
|
||||
assert dest == destinations.dest1
|
||||
TrustLevel.TRUSTED
|
||||
}
|
||||
hostCacheMock.ignore.getHosts { n -> [destinations.dest2] }
|
||||
|
||||
initMocks()
|
||||
|
||||
outputStream.write("MuWire peer".bytes)
|
||||
byte [] OK = new byte[6]
|
||||
def dis = new DataInputStream(inputStream)
|
||||
dis.readFully(OK)
|
||||
assert OK == "REJECT".bytes
|
||||
|
||||
short payloadSize = dis.readUnsignedShort()
|
||||
byte[] payload = new byte[payloadSize]
|
||||
dis.readFully(payload)
|
||||
assert dis.read() == -1
|
||||
|
||||
def json = new JsonSlurper()
|
||||
json = json.parse(payload)
|
||||
assert json.tryHosts != null
|
||||
assert json.tryHosts.size() == 1
|
||||
assert json.tryHosts.contains(destinations.dest2.toBase64())
|
||||
|
||||
Thread.sleep(50)
|
||||
assert connectionEvents.size() == 1
|
||||
def event = connectionEvents[0]
|
||||
assert event.endpoint.destination == destinations.dest1
|
||||
assert event.status == ConnectionAttemptStatus.REJECTED
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue