update test case.
This commit is contained in:
@@ -6,8 +6,8 @@
|
||||
<capability>
|
||||
<catcall_detection use="none"/>
|
||||
</capability>
|
||||
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
|
||||
<library name="net" location="$ISE_LIBRARY\library\net\net-safe.ecf"/>
|
||||
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
|
||||
<library name="net" location="$ISE_LIBRARY\library\net\net.ecf"/>
|
||||
<cluster name="src" location=".\" recursive="true"/>
|
||||
</target>
|
||||
</system>
|
||||
253
tests/standalone/client/test_app.e
Normal file
253
tests/standalone/client/test_app.e
Normal file
@@ -0,0 +1,253 @@
|
||||
note
|
||||
description: "[
|
||||
Enter class description here!
|
||||
]"
|
||||
|
||||
class
|
||||
TEST_APP
|
||||
|
||||
inherit
|
||||
SHARED_EXECUTION_ENVIRONMENT
|
||||
|
||||
create
|
||||
make
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make
|
||||
-- Instantiate Current object.
|
||||
local
|
||||
h, res: STRING
|
||||
i: INTEGER
|
||||
l_test_name: detachable READABLE_STRING_GENERAL
|
||||
choices: HASH_TABLE [READABLE_STRING_GENERAL, INTEGER]
|
||||
do
|
||||
create h.make_empty
|
||||
h.append_character ((0).to_character_8)
|
||||
h.append_character ((0).to_character_8)
|
||||
h.append_character ((255).to_character_8)
|
||||
h.append_character ((255).to_character_8)
|
||||
|
||||
i := 0
|
||||
if attached execution_environment.arguments.argument (1) as tn then
|
||||
l_test_name := tn
|
||||
else
|
||||
create choices.make (tests.count)
|
||||
across
|
||||
tests as ic
|
||||
loop
|
||||
i := i + 1
|
||||
choices.force (ic.key, i)
|
||||
print (i.out + " - " + ic.key.out + "%N")
|
||||
end
|
||||
print (" > ")
|
||||
io.read_line
|
||||
res := io.last_string
|
||||
res.adjust
|
||||
if
|
||||
res.is_integer and then
|
||||
attached choices [res.to_integer] as tn
|
||||
then
|
||||
l_test_name := tn
|
||||
end
|
||||
end
|
||||
if
|
||||
l_test_name /= Void and then
|
||||
attached tests [l_test_name] as proc
|
||||
then
|
||||
proc.call ()
|
||||
else
|
||||
print ("Quit...%N")
|
||||
end
|
||||
end
|
||||
|
||||
port_number: INTEGER = 9090
|
||||
|
||||
hostname: STRING = "localhost"
|
||||
|
||||
has_error: BOOLEAN
|
||||
|
||||
tests: STRING_TABLE [PROCEDURE]
|
||||
once
|
||||
create Result.make (10)
|
||||
Result.force (agent cli_execute_get_request, "get_request")
|
||||
Result.force (agent execute_get_request (1, 0), "get_request (1,0)")
|
||||
Result.force (agent execute_get_request (10, 0), "get_request (10,0)")
|
||||
Result.force (agent execute_get_request (1, 10_000), "get_request (1, 10000)")
|
||||
Result.force (agent execute_get_request (10, 10_000), "get_request (10, 10000)")
|
||||
Result.force (agent execute_wait_for_ever, "wait_for_ever")
|
||||
end
|
||||
|
||||
feature -- Execution
|
||||
|
||||
wait_ms (a_delay_ms: INTEGER; m: detachable READABLE_STRING_8)
|
||||
local
|
||||
i64: INTEGER_64
|
||||
do
|
||||
if a_delay_ms > 0 then
|
||||
if has_error then
|
||||
print ("[ERROR/WAIT] Skipped due to previous error%N")
|
||||
else
|
||||
|
||||
i64 := a_delay_ms.as_integer_64 * {INTEGER_64} 1_000_000
|
||||
if m /= Void then
|
||||
print ("[WAIT] " + i64.out + " nanoseconds -> " + m + "%N")
|
||||
else
|
||||
print ("[WAIT] " + i64.out + " nanoseconds.%N")
|
||||
end
|
||||
execution_environment.sleep (i64) -- nanoseconds
|
||||
print ("[WAIT] done.%N")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
cli_execute_get_request
|
||||
local
|
||||
i,n: INTEGER
|
||||
rq_nb: INTEGER
|
||||
sl_val: INTEGER
|
||||
do
|
||||
if attached execution_environment.arguments as args then
|
||||
n := args.argument_count
|
||||
rq_nb := 1
|
||||
sl_val := 0
|
||||
i := 1
|
||||
if n > i then
|
||||
if args.argument (i).is_case_insensitive_equal_general ("get_request") then
|
||||
if n >= i + 1 then
|
||||
rq_nb := args.argument (i + 1).to_integer
|
||||
if n >= i + 2 then
|
||||
sl_val := args.argument (i + 2).to_integer
|
||||
end
|
||||
end
|
||||
execute_get_request (rq_nb, sl_val)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
execute_get_request (rq_nb: INTEGER; a_delay_ms: INTEGER)
|
||||
require
|
||||
rq_nb > 0
|
||||
local
|
||||
l_socket: NETWORK_STREAM_SOCKET
|
||||
l_packet: PACKET
|
||||
l_header_done, l_done: BOOLEAN
|
||||
line, txt: READABLE_STRING_8
|
||||
h: STRING
|
||||
len: INTEGER
|
||||
i: INTEGER
|
||||
do
|
||||
create l_socket.make_client_by_port (port_number, hostname)
|
||||
l_socket.connect
|
||||
|
||||
from
|
||||
i := rq_nb
|
||||
until
|
||||
i <= 0
|
||||
loop
|
||||
i := i - 1
|
||||
|
||||
print ("GET /test/"+ i.out +" HTTP/1.1%N")
|
||||
-- socket_put_string (l_socket, "GET /test/"+ i.out +" HTTP/1.1%R%N")
|
||||
|
||||
socket_put_string (l_socket, "GET /test/"+ i.out)
|
||||
wait_ms (a_delay_ms, "inside GET request line")
|
||||
socket_put_string (l_socket, " HTTP/1.1%R%N")
|
||||
wait_ms (a_delay_ms, "before Host")
|
||||
socket_put_string (l_socket, "Host: localhost:9090%R%N")
|
||||
wait_ms (a_delay_ms, "before Accept")
|
||||
socket_put_string (l_socket, "Accept: */*%R%N")
|
||||
wait_ms (a_delay_ms, "before CRNL")
|
||||
socket_put_string (l_socket, "%R%N")
|
||||
wait_ms (a_delay_ms, "before reading!")
|
||||
|
||||
if not has_error then
|
||||
from
|
||||
l_done := False
|
||||
l_header_done := False
|
||||
create h.make_empty
|
||||
until
|
||||
l_done
|
||||
loop
|
||||
if l_header_done then
|
||||
l_socket.read_stream (len)
|
||||
txt := l_socket.last_string
|
||||
print ("BODY:%N")
|
||||
print (txt)
|
||||
print ("%N")
|
||||
if txt.count /= len then
|
||||
print ("BAD len: " + txt.count.out + " /= " + len.out + "%N")
|
||||
end
|
||||
l_done := True
|
||||
else
|
||||
l_socket.read_line
|
||||
line := l_socket.last_string
|
||||
if l_socket.was_error then
|
||||
l_done := True
|
||||
elseif line.is_empty or (line.count = 1 and line[1] = '%R') then
|
||||
l_header_done := True
|
||||
else
|
||||
if line.starts_with_general ("Content-Length:") then
|
||||
len := line.substring (16, line.count).to_integer
|
||||
end
|
||||
h.append (line)
|
||||
h.append ("%R%N")
|
||||
|
||||
print ("HEADER:")
|
||||
print (line)
|
||||
print ("%N")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
execute_wait_for_ever
|
||||
local
|
||||
l_socket: NETWORK_STREAM_SOCKET
|
||||
l_packet: PACKET
|
||||
do
|
||||
create l_socket.make_client_by_port(9090, "localhost")
|
||||
l_socket.connect
|
||||
|
||||
create l_packet.make(1)
|
||||
l_packet.put_element('a', 0)
|
||||
|
||||
l_socket.send(l_packet, 0)
|
||||
|
||||
from
|
||||
|
||||
until
|
||||
not l_socket.is_connected
|
||||
loop
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
socket_put_string (a_socket: NETWORK_STREAM_SOCKET; s: STRING_8)
|
||||
local
|
||||
retried: BOOLEAN
|
||||
t: STRING
|
||||
i: INTEGER
|
||||
do
|
||||
if has_error then
|
||||
create t.make_from_string (s)
|
||||
i := t.index_of ('%N', 1)
|
||||
if i > 0 then
|
||||
t.keep_head (i - 1)
|
||||
end
|
||||
t.adjust
|
||||
print ("[ERROR] Skip put_string ("+ s +"..)%N")
|
||||
elseif retried then
|
||||
has_error := True
|
||||
else
|
||||
a_socket.put_string (s)
|
||||
end
|
||||
rescue
|
||||
retried := True
|
||||
retry
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user