~spuul/nginx/trunk

« back to all changes in this revision

Viewing changes to debian/modules/nginx-lua/t/067-req-socket.t

  • Committer: Package Import Robot
  • Author(s): Christos Trochalakis, Christos Trochalakis
  • Date: 2014-02-13 11:41:49 UTC
  • mfrom: (1.3.32)
  • mto: This revision was merged to the branch mainline in revision 72.
  • Revision ID: package-import@ubuntu.com-20140213114149-tkp78c45rzu3wr6y
Tags: 1.4.5-1
[ Christos Trochalakis ]
* New upstream release.
* debian/modules/nginx-lua:
  + Update nginx-lua to v0.9.4
* debian/nginx-naxsi-ui.preinst:
  + Fix exit status issue (Closes: #735152)
* debian/control:
  + Fix arch:all to arch:any dependencies
  + Make nginx depend on specific flavor version
* debian/nginx-*.postinst:
  + Make nginx start by default (Closes: #735551)
* debian/nginx-*.prerm:
  + No need to check for invoke-rc.d,
    correctly set the exit code on error
* debian/nginx-common.nginx.init:
  + Rewrite some parts of the initscript
  + Introduce rotate command
  + Introduce upgrade command

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# vim:set ft= ts=4 sw=4 et fdm=marker:
2
2
 
3
3
use lib 'lib';
4
 
use Test::Nginx::Socket;
 
4
use Test::Nginx::Socket::Lua;
5
5
 
6
6
repeat_each(2);
7
7
 
8
 
plan tests => repeat_each() * (blocks() * 3 + 8);
 
8
plan tests => repeat_each() * (blocks() * 3 + 9);
9
9
 
10
10
our $HtmlDir = html_dir;
11
11
 
752
752
--- no_error_log
753
753
[error]
754
754
 
 
755
 
 
756
 
 
757
=== TEST 13: failing reread after reading timeout happens
 
758
--- config
 
759
    location = /t {
 
760
        content_by_lua '
 
761
            local sock, err = ngx.req.socket()
 
762
 
 
763
            if not sock then
 
764
               ngx.say("failed to get socket: ", err)
 
765
               return nil
 
766
            end
 
767
 
 
768
            sock:settimeout(100);
 
769
 
 
770
            local data, err, partial = sock:receive(4096)
 
771
            if err then
 
772
               ngx.say("err: ", err, ", partial: ", partial)
 
773
            end
 
774
 
 
775
            local data, err, partial = sock:receive(4096)
 
776
            if err then
 
777
               ngx.say("err: ", err, ", partial: ", partial)
 
778
               return
 
779
            end
 
780
        ';
 
781
    }
 
782
 
 
783
--- raw_request eval
 
784
"POST /t HTTP/1.0\r
 
785
Host: localhost\r
 
786
Content-Length: 10245\r
 
787
\r
 
788
hello"
 
789
--- response_body
 
790
err: timeout, partial: hello
 
791
err: timeout, partial: 
 
792
 
 
793
--- error_log
 
794
lua tcp socket read timed out
 
795
 
 
796
 
 
797
 
 
798
=== TEST 14: successful reread after reading timeout happens (receive -> receive)
 
799
--- config
 
800
    location = /t {
 
801
        content_by_lua '
 
802
            local sock = ngx.socket.tcp()
 
803
            local ok, err = sock:connect("127.0.0.1", ngx.var.server_port)
 
804
            if not ok then
 
805
                ngx.say("failed to connect: ", err)
 
806
                return
 
807
            end
 
808
 
 
809
            local bytes, err = sock:send("POST /back HTTP/1.0\\r\\nHost: localhost\\r\\nContent-Length: 1024\\r\\n\\r\\nabc")
 
810
            if not bytes then
 
811
                ngx.say("failed to send: ", err)
 
812
            else
 
813
                ngx.say("sent: ", bytes)
 
814
            end
 
815
 
 
816
            ngx.sleep(0.2)
 
817
 
 
818
            local bytes, err = sock:send("hello world")
 
819
            if not bytes then
 
820
                ngx.say("failed to send: ", err)
 
821
            else
 
822
                ngx.say("sent: ", bytes)
 
823
            end
 
824
 
 
825
            local reader = sock:receiveuntil("\\r\\n\\r\\n")
 
826
            local header, err = reader()
 
827
            if not header then
 
828
                ngx.say("failed to receive header: ", err)
 
829
                return
 
830
            end
 
831
 
 
832
            for i = 1, 2 do
 
833
                local line, err = sock:receive()
 
834
                if not line then
 
835
                    ngx.say("failed to receive line: ", err)
 
836
                    return
 
837
                end
 
838
                ngx.say("received: ", line)
 
839
            end
 
840
        ';
 
841
    }
 
842
 
 
843
    location = /back {
 
844
        content_by_lua '
 
845
            ngx.send_headers()
 
846
            ngx.flush(true)
 
847
 
 
848
            local sock, err = ngx.req.socket()
 
849
 
 
850
            if not sock then
 
851
               ngx.say("failed to get socket: ", err)
 
852
               return nil
 
853
            end
 
854
 
 
855
            sock:settimeout(100);
 
856
 
 
857
            local data, err, partial = sock:receive(4096)
 
858
            if err then
 
859
               ngx.say("err: ", err, ", partial: ", partial)
 
860
            else
 
861
                ngx.say("received: ", data)
 
862
            end
 
863
 
 
864
            ngx.sleep(0.1)
 
865
 
 
866
            local data, err, partial = sock:receive(11)
 
867
            if err then
 
868
               ngx.say("err: ", err, ", partial: ", partial)
 
869
            else
 
870
                ngx.say("received: ", data)
 
871
            end
 
872
        ';
 
873
    }
 
874
 
 
875
--- request
 
876
GET /t
 
877
--- response_body
 
878
sent: 65
 
879
sent: 11
 
880
received: err: timeout, partial: abc
 
881
received: received: hello world
 
882
 
 
883
--- error_log
 
884
lua tcp socket read timed out
 
885
 
 
886
 
 
887
 
 
888
=== TEST 15: successful reread after reading timeout happens (receive -> receiveuntil)
 
889
--- config
 
890
    location = /t {
 
891
        content_by_lua '
 
892
            local sock = ngx.socket.tcp()
 
893
            local ok, err = sock:connect("127.0.0.1", ngx.var.server_port)
 
894
            if not ok then
 
895
                ngx.say("failed to connect: ", err)
 
896
                return
 
897
            end
 
898
 
 
899
            local bytes, err = sock:send("POST /back HTTP/1.0\\r\\nHost: localhost\\r\\nContent-Length: 1024\\r\\n\\r\\nabc")
 
900
            if not bytes then
 
901
                ngx.say("failed to send: ", err)
 
902
            else
 
903
                ngx.say("sent: ", bytes)
 
904
            end
 
905
 
 
906
            ngx.sleep(0.2)
 
907
 
 
908
            local bytes, err = sock:send("hello world\\n")
 
909
            if not bytes then
 
910
                ngx.say("failed to send: ", err)
 
911
            else
 
912
                ngx.say("sent: ", bytes)
 
913
            end
 
914
 
 
915
            local reader = sock:receiveuntil("\\r\\n\\r\\n")
 
916
            local header, err = reader()
 
917
            if not header then
 
918
                ngx.say("failed to receive header: ", err)
 
919
                return
 
920
            end
 
921
 
 
922
            for i = 1, 2 do
 
923
                local line, err = sock:receive()
 
924
                if not line then
 
925
                    ngx.say("failed to receive line: ", err)
 
926
                    return
 
927
                end
 
928
                ngx.say("received: ", line)
 
929
            end
 
930
        ';
 
931
    }
 
932
 
 
933
    location = /back {
 
934
        content_by_lua '
 
935
            ngx.send_headers()
 
936
            ngx.flush(true)
 
937
 
 
938
            local sock, err = ngx.req.socket()
 
939
 
 
940
            if not sock then
 
941
               ngx.say("failed to get socket: ", err)
 
942
               return nil
 
943
            end
 
944
 
 
945
            sock:settimeout(100);
 
946
 
 
947
            local data, err, partial = sock:receive(4096)
 
948
            if err then
 
949
               ngx.say("err: ", err, ", partial: ", partial)
 
950
            else
 
951
                ngx.say("received: ", data)
 
952
            end
 
953
 
 
954
            ngx.sleep(0.1)
 
955
 
 
956
            local reader = sock:receiveuntil("\\n")
 
957
            local data, err, partial = reader()
 
958
            if err then
 
959
               ngx.say("err: ", err, ", partial: ", partial)
 
960
            else
 
961
                ngx.say("received: ", data)
 
962
            end
 
963
        ';
 
964
    }
 
965
 
 
966
--- request
 
967
GET /t
 
968
--- response_body
 
969
sent: 65
 
970
sent: 12
 
971
received: err: timeout, partial: abc
 
972
received: received: hello world
 
973
 
 
974
--- error_log
 
975
lua tcp socket read timed out
 
976
 
 
977
 
 
978
 
 
979
=== TEST 16: successful reread after reading timeout happens (receiveuntil -> receive)
 
980
--- config
 
981
    location = /t {
 
982
        content_by_lua '
 
983
            local sock = ngx.socket.tcp()
 
984
            local ok, err = sock:connect("127.0.0.1", ngx.var.server_port)
 
985
            if not ok then
 
986
                ngx.say("failed to connect: ", err)
 
987
                return
 
988
            end
 
989
 
 
990
            local bytes, err = sock:send("POST /back HTTP/1.0\\r\\nHost: localhost\\r\\nContent-Length: 1024\\r\\n\\r\\nabc")
 
991
            if not bytes then
 
992
                ngx.say("failed to send: ", err)
 
993
            else
 
994
                ngx.say("sent: ", bytes)
 
995
            end
 
996
 
 
997
            ngx.sleep(0.2)
 
998
 
 
999
            local bytes, err = sock:send("hello world\\n")
 
1000
            if not bytes then
 
1001
                ngx.say("failed to send: ", err)
 
1002
            else
 
1003
                ngx.say("sent: ", bytes)
 
1004
            end
 
1005
 
 
1006
            local reader = sock:receiveuntil("\\r\\n\\r\\n")
 
1007
            local header, err = reader()
 
1008
            if not header then
 
1009
                ngx.say("failed to receive header: ", err)
 
1010
                return
 
1011
            end
 
1012
 
 
1013
            for i = 1, 2 do
 
1014
                local line, err = sock:receive()
 
1015
                if not line then
 
1016
                    ngx.say("failed to receive line: ", err)
 
1017
                    return
 
1018
                end
 
1019
                ngx.say("received: ", line)
 
1020
            end
 
1021
        ';
 
1022
    }
 
1023
 
 
1024
    location = /back {
 
1025
        content_by_lua '
 
1026
            ngx.send_headers()
 
1027
            ngx.flush(true)
 
1028
 
 
1029
            local sock, err = ngx.req.socket()
 
1030
 
 
1031
            if not sock then
 
1032
               ngx.say("failed to get socket: ", err)
 
1033
               return nil
 
1034
            end
 
1035
 
 
1036
            sock:settimeout(100);
 
1037
 
 
1038
            local reader = sock:receiveuntil("no-such-terminator")
 
1039
            local data, err, partial = reader()
 
1040
            if not data then
 
1041
               ngx.say("err: ", err, ", partial: ", partial)
 
1042
            else
 
1043
                ngx.say("received: ", data)
 
1044
            end
 
1045
 
 
1046
            ngx.sleep(0.1)
 
1047
 
 
1048
            local data, err, partial = sock:receive()
 
1049
            if err then
 
1050
               ngx.say("err: ", err, ", partial: ", partial)
 
1051
            else
 
1052
                ngx.say("received: ", data)
 
1053
            end
 
1054
        ';
 
1055
    }
 
1056
 
 
1057
--- request
 
1058
GET /t
 
1059
--- response_body
 
1060
sent: 65
 
1061
sent: 12
 
1062
received: err: timeout, partial: abc
 
1063
received: received: hello world
 
1064
 
 
1065
--- error_log
 
1066
lua tcp socket read timed out
 
1067
 
 
1068
 
 
1069
 
 
1070
=== TEST 17: req socket GC'd
 
1071
--- config
 
1072
    location /t {
 
1073
        content_by_lua '
 
1074
            do
 
1075
                local sock, err = ngx.req.socket()
 
1076
                if sock then
 
1077
                    ngx.say("got the request socket")
 
1078
                else
 
1079
                    ngx.say("failed to get the request socket: ", err)
 
1080
                end
 
1081
            end
 
1082
            collectgarbage()
 
1083
            ngx.log(ngx.WARN, "GC cycle done")
 
1084
 
 
1085
            ngx.say("done")
 
1086
        ';
 
1087
    }
 
1088
--- request
 
1089
POST /t
 
1090
hello world
 
1091
--- response_body
 
1092
got the request socket
 
1093
done
 
1094
--- no_error_log
 
1095
[error]
 
1096
--- grep_error_log eval: qr/lua finalize socket|GC cycle done/
 
1097
--- grep_error_log_out
 
1098
lua finalize socket
 
1099
GC cycle done
 
1100