Add KMP networking backends
This commit is contained in:
1 parent
d409a4bb8b
commit
5346d15a9f
25 files changed
+1744
-75
No files matched your search
@@ -0,0 +1,70 @@
|
||||
package net.sergeych.lyngio
|
||||
|
||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.promise
|
||||
import net.sergeych.lyngio.net.LyngIpVersion
|
||||
import net.sergeych.lyngio.net.getSystemNetEngine
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNotNull
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
@OptIn(DelicateCoroutinesApi::class)
|
||||
class NetJsNodeTest {
|
||||
@Test
|
||||
fun testNodeNetCapabilitiesAndResolve() = GlobalScope.promise {
|
||||
val engine = getSystemNetEngine()
|
||||
assertTrue(engine.isSupported)
|
||||
assertTrue(engine.isTcpAvailable)
|
||||
assertTrue(engine.isTcpServerAvailable)
|
||||
assertTrue(engine.isUdpAvailable)
|
||||
|
||||
val resolved = engine.resolve("127.0.0.1", 4040)
|
||||
assertTrue(resolved.isNotEmpty())
|
||||
assertEquals(4040, resolved.first().port)
|
||||
assertEquals(LyngIpVersion.IPV4, resolved.first().ipVersion)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testNodeTcpLoopback() = GlobalScope.promise {
|
||||
val engine = getSystemNetEngine()
|
||||
val server = engine.tcpListen(host = "127.0.0.1", port = 0, backlog = 8, reuseAddress = true)
|
||||
val accepted = async {
|
||||
val socket = server.accept()
|
||||
val line = socket.readLine()
|
||||
socket.writeUtf8("echo:$line\n")
|
||||
socket.flush()
|
||||
socket.close()
|
||||
line
|
||||
}
|
||||
|
||||
val client = engine.tcpConnect("127.0.0.1", server.localAddress().port, timeoutMillis = null, noDelay = true)
|
||||
client.writeUtf8("ping\n")
|
||||
client.flush()
|
||||
val reply = client.readLine()
|
||||
client.close()
|
||||
server.close()
|
||||
|
||||
assertEquals("ping", accepted.await())
|
||||
assertEquals("echo:ping", reply)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testNodeUdpLoopback() = GlobalScope.promise {
|
||||
val engine = getSystemNetEngine()
|
||||
val server = engine.udpBind(host = "127.0.0.1", port = 0, reuseAddress = true)
|
||||
val client = engine.udpBind(host = "127.0.0.1", port = 0, reuseAddress = true)
|
||||
|
||||
client.send("ping".encodeToByteArray(), "127.0.0.1", server.localAddress().port)
|
||||
val received = server.receive(1024)
|
||||
|
||||
client.close()
|
||||
server.close()
|
||||
|
||||
assertNotNull(received)
|
||||
assertEquals("ping", received.data.decodeToString())
|
||||
assertTrue(received.address.port > 0)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package net.sergeych.lyngio
|
||||
|
||||
import net.sergeych.lyngio.http.getSystemHttpEngine
|
||||
import net.sergeych.lyngio.ws.getSystemWsEngine
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class PlatformCapabilityJsTest {
|
||||
@Test
|
||||
fun testJsHttpAndWsCapabilitiesReportSupported() {
|
||||
assertTrue(getSystemHttpEngine().isSupported, "JS HTTP engine should be available")
|
||||
assertTrue(getSystemWsEngine().isSupported, "JS websocket engine should be available")
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user