2020-02-24 08:31:40 -05:00
|
|
|
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
2020-09-27 06:22:32 -04:00
|
|
|
import { assertNotEquals, assertStrictEquals } from "../testing/asserts.ts";
|
2020-09-26 11:54:26 -04:00
|
|
|
import { BufReader, ReadLineResult } from "../io/bufio.ts";
|
|
|
|
import { dirname, fromFileUrl } from "../path/mod.ts";
|
2020-09-09 14:57:49 -04:00
|
|
|
|
2020-09-26 11:54:26 -04:00
|
|
|
const moduleDir = dirname(fromFileUrl(import.meta.url));
|
2020-02-24 08:31:40 -05:00
|
|
|
|
|
|
|
Deno.test("[examples/echo_server]", async () => {
|
|
|
|
const encoder = new TextEncoder();
|
|
|
|
const decoder = new TextDecoder();
|
|
|
|
const process = Deno.run({
|
2020-05-04 07:03:30 -04:00
|
|
|
cmd: [Deno.execPath(), "run", "--allow-net", "echo_server.ts"],
|
2020-09-09 14:57:49 -04:00
|
|
|
cwd: moduleDir,
|
2020-03-28 13:03:49 -04:00
|
|
|
stdout: "piped",
|
2020-02-24 08:31:40 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
let conn: Deno.Conn | undefined;
|
|
|
|
try {
|
2020-06-09 07:18:18 -04:00
|
|
|
const processReader = new BufReader(process.stdout);
|
2020-02-24 08:31:40 -05:00
|
|
|
const message = await processReader.readLine();
|
|
|
|
|
2020-04-28 12:40:43 -04:00
|
|
|
assertNotEquals(message, null);
|
2020-06-05 23:43:00 -04:00
|
|
|
assertStrictEquals(
|
2020-02-24 08:31:40 -05:00
|
|
|
decoder.decode((message as ReadLineResult).line).trim(),
|
2020-07-14 15:24:17 -04:00
|
|
|
"Listening on 0.0.0.0:8080",
|
2020-02-24 08:31:40 -05:00
|
|
|
);
|
|
|
|
|
2020-03-24 12:24:58 -04:00
|
|
|
conn = await Deno.connect({ hostname: "127.0.0.1", port: 8080 });
|
2020-02-24 08:31:40 -05:00
|
|
|
const connReader = new BufReader(conn);
|
|
|
|
|
|
|
|
await conn.write(encoder.encode("Hello echo_server\n"));
|
|
|
|
const result = await connReader.readLine();
|
|
|
|
|
2020-04-28 12:40:43 -04:00
|
|
|
assertNotEquals(result, null);
|
2020-02-24 08:31:40 -05:00
|
|
|
|
|
|
|
const actualResponse = decoder
|
|
|
|
.decode((result as ReadLineResult).line)
|
|
|
|
.trim();
|
|
|
|
const expectedResponse = "Hello echo_server";
|
|
|
|
|
2020-06-05 23:43:00 -04:00
|
|
|
assertStrictEquals(actualResponse, expectedResponse);
|
2020-02-24 08:31:40 -05:00
|
|
|
} finally {
|
|
|
|
conn?.close();
|
2020-06-09 07:18:18 -04:00
|
|
|
process.stdout.close();
|
2020-02-24 08:31:40 -05:00
|
|
|
process.close();
|
|
|
|
}
|
|
|
|
});
|