@@ -12,6 +12,7 @@ import (
1212 "time"
1313
1414 "github.com/ninedraft/gemax/gemax"
15+ "github.com/ninedraft/gemax/gemax/internal/testaddr"
1516 "github.com/ninedraft/gemax/gemax/status"
1617)
1718
@@ -68,6 +69,35 @@ func TestServerInvalidHost(test *testing.T) {
6869 expectResponse (test , resp , "50 host not found\r \n " )
6970}
7071
72+ func TestServerCancelListen (test * testing.T ) {
73+ var server = & gemax.Server {
74+ Addr : testaddr .Addr (),
75+ Logf : test .Logf ,
76+ Handler : func (ctx context.Context , rw gemax.ResponseWriter , req gemax.IncomingRequest ) {
77+ _ , _ = io .WriteString (rw , "example text" )
78+ },
79+ }
80+ test .Logf ("loading test certs" )
81+ var cert , errCert = tls .LoadX509KeyPair ("testdata/cert.pem" , "testdata/key.pem" )
82+ if errCert != nil {
83+ test .Fatal (errCert )
84+ }
85+ var cfg = & tls.Config {
86+ MinVersion : tls .VersionTLS12 ,
87+ Certificates : []tls.Certificate {cert },
88+ }
89+ var ctx , cancel = context .WithCancel (context .Background ())
90+ test .Cleanup (cancel )
91+ test .Logf ("starting test server" )
92+ test .Logf ("test server: listening on %q" , server .Addr )
93+
94+ time .AfterFunc (100 * time .Millisecond , cancel )
95+ var err = server .ListenAndServe (ctx , cfg )
96+ if ! errors .Is (err , net .ErrClosed ) {
97+ test .Errorf ("unexpected error %v, while %q is expected" , err , net .ErrClosed )
98+ }
99+ }
100+
71101func TestListenAndServe (test * testing.T ) {
72102 var server = & gemax.Server {
73103 Addr : "localhost:40423" ,
0 commit comments