golang.zx2c4.com/wireguard/windows@v0.5.4-0.20230123132234-dcc0eb72a04b/updater/winhttp/winhttp_test.go (about) 1 /* SPDX-License-Identifier: MIT 2 * 3 * Copyright (C) 2019-2022 WireGuard LLC. All Rights Reserved. 4 */ 5 6 package winhttp 7 8 import ( 9 "fmt" 10 "io" 11 "runtime" 12 "testing" 13 ) 14 15 type progressPrinter struct { 16 downloaded uint64 17 total uint64 18 } 19 20 func (pp *progressPrinter) Write(p []byte) (int, error) { 21 bytes := len(p) 22 pp.downloaded += uint64(bytes) 23 fmt.Printf("%d/%d bytes, %f%%\n", pp.downloaded, pp.total, float64(pp.downloaded)/float64(pp.total)*100.0) 24 return bytes, nil 25 } 26 27 func TestResponse(t *testing.T) { 28 session, err := NewSession("WinHTTP Test Suite/1.0") 29 if err != nil { 30 t.Fatal(err) 31 } 32 connection, err := session.Connect("zx2c4.com", 443, true) 33 if err != nil { 34 t.Fatal(err) 35 } 36 r, err := connection.Get("/ip", true) 37 length, err := r.Length() 38 if err != nil { 39 t.Fatal(err) 40 } 41 fmt.Printf("The length is %d\n", length) 42 bytes, err := io.ReadAll(r) 43 if err != nil { 44 t.Fatal(err) 45 } 46 fmt.Println(string(bytes)) 47 r.Close() 48 49 connection, err = session.Connect("speed.hetzner.de", 443, true) 50 if err != nil { 51 t.Fatal(err) 52 } 53 r, err = connection.Get("/10GB.bin", false) 54 if err != nil { 55 t.Fatal(err) 56 } 57 length, err = r.Length() 58 if err != nil { 59 t.Fatal(err) 60 } 61 amountRead, err := io.Copy(&progressPrinter{total: length}, r) 62 if err != nil { 63 t.Fatal(err) 64 } 65 r.Close() 66 if length != uint64(amountRead) { 67 t.Fatalf("Expected to read %d, but only read %d", length, amountRead) 68 } 69 70 runtime.GC() // Try to force the finalizers to be called 71 }