mirror of https://github.com/zlatinb/muwire
more unit tests
parent
37909d5193
commit
92e5cc87ef
|
@ -1,5 +1,7 @@
|
||||||
package com.muwire.core.connection
|
package com.muwire.core.connection
|
||||||
|
|
||||||
|
import static org.junit.Assert.fail
|
||||||
|
|
||||||
import java.util.concurrent.CopyOnWriteArrayList
|
import java.util.concurrent.CopyOnWriteArrayList
|
||||||
|
|
||||||
import org.junit.After
|
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.TrustLevel
|
||||||
import com.muwire.core.trust.TrustService
|
import com.muwire.core.trust.TrustService
|
||||||
|
|
||||||
|
import groovy.json.JsonSlurper
|
||||||
import groovy.mock.interceptor.MockFor
|
import groovy.mock.interceptor.MockFor
|
||||||
|
|
||||||
class ConnectionAcceptorTest {
|
class ConnectionAcceptorTest {
|
||||||
|
@ -111,4 +114,236 @@ class ConnectionAcceptorTest {
|
||||||
assert event.endpoint.destination == destinations.dest1
|
assert event.endpoint.destination == destinations.dest1
|
||||||
assert event.status == ConnectionAttemptStatus.SUCCESSFUL
|
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