func TestWriterBig(t *testing.T) { for i, fn := range filenames { testFileLevelDict(t, fn, DefaultCompression, "") testFileLevelDict(t, fn, NoCompression, "") for level := BestSpeed; level <= BestCompression; level++ { testFileLevelDict(t, fn, level, "") if level >= 1 && testing.Short() && testenv.Builder() == "" { break } } if i == 0 && testing.Short() && testenv.Builder() == "" { break } } }
// Per golang.org/issue/14937, check that every .gz file // in the tree has a zero mtime. func TestGZIPFilesHaveZeroMTimes(t *testing.T) { if testing.Short() && testenv.Builder() == "" { t.Skip("skipping in short mode") } var files []string err := filepath.Walk(runtime.GOROOT(), func(path string, info os.FileInfo, err error) error { if err != nil { return err } if !info.IsDir() && strings.HasSuffix(path, ".gz") { files = append(files, path) } return nil }) if err != nil { if os.IsNotExist(err) { t.Skipf("skipping: GOROOT directory not found: %s", runtime.GOROOT()) } t.Fatal("error collecting list of .gz files in GOROOT: ", err) } if len(files) == 0 { t.Fatal("expected to find some .gz files under GOROOT") } for _, path := range files { checkZeroMTime(t, path) } }
func TestWriterDict(t *testing.T) { const dictionary = "0123456789." for i, fn := range filenames { testFileLevelDict(t, fn, DefaultCompression, dictionary) testFileLevelDict(t, fn, NoCompression, dictionary) for level := BestSpeed; level <= BestCompression; level++ { testFileLevelDict(t, fn, level, dictionary) if level >= 1 && testing.Short() && testenv.Builder() == "" { break } } if i == 0 && testing.Short() && testenv.Builder() == "" { break } } }
func TestLookupGmailNS(t *testing.T) { if testenv.Builder() == "" { testenv.MustHaveExternalNetwork(t) } if !supportsIPv4 || !*testIPv4 { t.Skip("IPv4 is required") } for _, tt := range lookupGmailNSTests { nss, err := LookupNS(tt.name) if err != nil { testenv.SkipFlakyNet(t) t.Fatal(err) } if len(nss) == 0 { t.Error("got no record") } for _, ns := range nss { if !strings.HasSuffix(ns.Host, tt.host) { t.Errorf("got %v; want a record containing %s", ns, tt.host) } } } }
func TestLookupGoogleSRV(t *testing.T) { if testenv.Builder() == "" { testenv.MustHaveExternalNetwork(t) } if !supportsIPv4 || !*testIPv4 { t.Skip("IPv4 is required") } for _, tt := range lookupGoogleSRVTests { cname, srvs, err := LookupSRV(tt.service, tt.proto, tt.name) if err != nil { testenv.SkipFlakyNet(t) t.Fatal(err) } if len(srvs) == 0 { t.Error("got no record") } if !strings.HasSuffix(cname, tt.cname) { t.Errorf("got %s; want %s", cname, tt.cname) } for _, srv := range srvs { if !strings.HasSuffix(srv.Target, tt.target) { t.Errorf("got %v; want a record containing %s", srv, tt.target) } } } }
func TestOver65kFiles(t *testing.T) { if testing.Short() && testenv.Builder() == "" { t.Skip("skipping in short mode") } buf := new(bytes.Buffer) w := NewWriter(buf) const nFiles = (1 << 16) + 42 for i := 0; i < nFiles; i++ { _, err := w.CreateHeader(&FileHeader{ Name: fmt.Sprintf("%d.dat", i), Method: Store, // avoid Issue 6136 and Issue 6138 }) if err != nil { t.Fatalf("creating file %d: %v", i, err) } } if err := w.Close(); err != nil { t.Fatalf("Writer.Close: %v", err) } s := buf.String() zr, err := NewReader(strings.NewReader(s), int64(len(s))) if err != nil { t.Fatalf("NewReader: %v", err) } if got := len(zr.File); got != nFiles { t.Fatalf("File contains %d files, want %d", got, nFiles) } for i := 0; i < nFiles; i++ { want := fmt.Sprintf("%d.dat", i) if zr.File[i].Name != want { t.Fatalf("File(%d) = %q, want %q", i, zr.File[i].Name, want) } } }
func bench(b *testing.B, size int, algo func(Interface), name string) { if stringspkg.HasSuffix(testenv.Builder(), "-race") && size > 1e4 { b.Skip("skipping slow benchmark on race builder") } b.StopTimer() data := make(intPairs, size) x := ^uint32(0) for i := 0; i < b.N; i++ { for n := size - 3; n <= size+3; n++ { for i := 0; i < len(data); i++ { x += x x ^= 1 if int32(x) < 0 { x ^= 0x88888eef } data[i].a = int(x % uint32(n/5)) } data.initB() b.StartTimer() algo(data) b.StopTimer() if !IsSorted(data) { b.Errorf("%s did not sort %d ints", name, n) } if name == "Stable" && !data.inOrder() { b.Errorf("%s unstable on %d ints", name, n) } } } }
func TestDialerDualStack(t *testing.T) { // This test is known to be flaky. Don't frighten regular // users about it; only fail on the build dashboard. if testenv.Builder() == "" { testenv.SkipFlaky(t, 13324) } if !supportsIPv4 || !supportsIPv6 { t.Skip("both IPv4 and IPv6 are required") } closedPortDelay, expectClosedPortDelay := dialClosedPort() if closedPortDelay > expectClosedPortDelay { t.Errorf("got %v; want <= %v", closedPortDelay, expectClosedPortDelay) } origTestHookLookupIP := testHookLookupIP defer func() { testHookLookupIP = origTestHookLookupIP }() testHookLookupIP = lookupLocalhost handler := func(dss *dualStackServer, ln Listener) { for { c, err := ln.Accept() if err != nil { return } c.Close() } } var timeout = 150*time.Millisecond + closedPortDelay for _, dualstack := range []bool{false, true} { dss, err := newDualStackServer() if err != nil { t.Fatal(err) } defer dss.teardown() if err := dss.buildup(handler); err != nil { t.Fatal(err) } d := &Dialer{DualStack: dualstack, Timeout: timeout} for range dss.lns { c, err := d.Dial("tcp", JoinHostPort("localhost", dss.port)) if err != nil { t.Error(err) continue } switch addr := c.LocalAddr().(*TCPAddr); { case addr.IP.To4() != nil: dss.teardownNetwork("tcp4") case addr.IP.To16() != nil && addr.IP.To4() == nil: dss.teardownNetwork("tcp6") } c.Close() } } }
func TestStdFixed(t *testing.T) { testenv.MustHaveGoBuild(t) if testing.Short() && testenv.Builder() == "" { t.Skip("skipping in short mode") } testTestDir(t, filepath.Join(runtime.GOROOT(), "test", "fixedbugs"), "bug248.go", "bug302.go", "bug369.go", // complex test instructions - ignore "issue6889.go", // gc-specific test "issue7746.go", // large constants - consumes too much memory "issue11362.go", // canonical import path check ) }
func TestDeflateInflateString(t *testing.T) { if testing.Short() && testenv.Builder() == "" { t.Skip("skipping in short mode") } for _, test := range deflateInflateStringTests { gold, err := ioutil.ReadFile(test.filename) if err != nil { t.Error(err) } testToFromWithLimit(t, gold, test.label, test.limit) if testing.Short() { break } } }
func TestStdFixed(t *testing.T) { testenv.MustHaveGoBuild(t) if testing.Short() && testenv.Builder() == "" { t.Skip("skipping in short mode") } testTestDir(t, filepath.Join(runtime.GOROOT(), "test", "fixedbugs"), "bug248.go", "bug302.go", "bug369.go", // complex test instructions - ignore "issue6889.go", // gc-specific test "issue7746.go", // large constants - consumes too much memory "issue11362.go", // canonical import path check "issue15002.go", // uses Mmap; testTestDir should consult build tags "issue16369.go", // go/types handles this correctly - not an issue ) }
func TestWriter(t *testing.T) { for _, filename := range filenames { for _, order := range [...]Order{LSB, MSB} { // The test data "2.71828 etcetera" is ASCII text requiring at least 6 bits. for litWidth := 6; litWidth <= 8; litWidth++ { if filename == "../testdata/gettysburg.txt" && litWidth == 6 { continue } testFile(t, filename, order, litWidth) } } if testing.Short() && testenv.Builder() == "" { break } } }
func TestImportStdLib(t *testing.T) { skipSpecialPlatforms(t) // This package only handles gc export data. if runtime.Compiler != "gc" { t.Skipf("gc-built packages not available (compiler = %s)", runtime.Compiler) return } dt := maxTime if testing.Short() && testenv.Builder() == "" { dt = 10 * time.Millisecond } nimports := testDir(t, "", time.Now().Add(dt)) // installed packages t.Logf("tested %d imports", nimports) }
func TestLookupDotsWithRemoteSource(t *testing.T) { if testing.Short() && testenv.Builder() == "" || !*testExternal { t.Skip("avoid external network") } if !supportsIPv4 || !*testIPv4 { t.Skip("IPv4 is required") } if fixup := forceGoDNS(); fixup != nil { testDots(t, "go") fixup() } if fixup := forceCgoDNS(); fixup != nil { testDots(t, "cgo") fixup() } }
func TestLookupIANACNAME(t *testing.T) { if testing.Short() && testenv.Builder() == "" || !*testExternal { t.Skip("avoid external network") } if !supportsIPv4 || !*testIPv4 { t.Skip("IPv4 is required") } for _, tt := range lookupIANACNAMETests { cname, err := LookupCNAME(tt.name) if err != nil { t.Fatal(err) } if !strings.HasSuffix(cname, tt.cname) { t.Errorf("got %s; want a record containing %s", cname, tt.cname) } } }
func TestStdTest(t *testing.T) { testenv.MustHaveGoBuild(t) if testing.Short() && testenv.Builder() == "" { t.Skip("skipping in short mode") } // test/recover4.go is only built for Linux and Darwin. // TODO(gri) Remove once tests consider +build tags (issue 10370). if runtime.GOOS != "linux" && runtime.GOOS != "darwin" { return } testTestDir(t, filepath.Join(runtime.GOROOT(), "test"), "cmplxdivide.go", // also needs file cmplxdivide1.go - ignore "sigchld.go", // don't work on Windows; testTestDir should consult build tags ) }
func TestLookupDotsWithRemoteSource(t *testing.T) { if testenv.Builder() == "" { testenv.MustHaveExternalNetwork(t) } if !supportsIPv4 || !*testIPv4 { t.Skip("IPv4 is required") } if fixup := forceGoDNS(); fixup != nil { testDots(t, "go") fixup() } if fixup := forceCgoDNS(); fixup != nil { testDots(t, "cgo") fixup() } }
func TestFloat32(t *testing.T) { // For issue 6721, the problem came after 7533753 calls, so check 10e6. num := int(10e6) // But do the full amount only on builders (not locally). // But ARM5 floating point emulation is slow (Issue 10749), so // do less for that builder: if testing.Short() && (testenv.Builder() == "" || hasSlowFloatingPoint()) { num /= 100 // 1.72 seconds instead of 172 seconds } r := New(NewSource(1)) for ct := 0; ct < num; ct++ { f := r.Float32() if f >= 1 { t.Fatal("Float32() should be in range [0,1). ct:", ct, "f:", f) } } }
func TestLookupDotsWithLocalSource(t *testing.T) { if !supportsIPv4 || !*testIPv4 { t.Skip("IPv4 is required") } if testenv.Builder() == "" { testenv.MustHaveExternalNetwork(t) } for i, fn := range []func() func(){forceGoDNS, forceCgoDNS} { fixup := fn() if fixup == nil { continue } names, err := LookupAddr("127.0.0.1") fixup() if err != nil { t.Logf("#%d: %v", i, err) continue } mode := "netgo" if i == 1 { mode = "netcgo" } loop: for i, name := range names { if strings.Index(name, ".") == len(name)-1 { // "localhost" not "localhost." for j := range names { if j == i { continue } if names[j] == name[:len(name)-1] { // It's OK if we find the name without the dot, // as some systems say 127.0.0.1 localhost localhost. continue loop } } t.Errorf("%s: got %s; want %s", mode, name, name[:len(name)-1]) } else if strings.Contains(name, ".") && !strings.HasSuffix(name, ".") { // "localhost.localdomain." not "localhost.localdomain" t.Errorf("%s: got %s; want name ending with trailing dot", mode, name) } } } }
func TestLookupGooglePublicDNSAddr(t *testing.T) { if testing.Short() && testenv.Builder() == "" || !*testExternal { t.Skip("avoid external network") } if !supportsIPv4 || !supportsIPv6 || !*testIPv4 || !*testIPv6 { t.Skip("both IPv4 and IPv6 are required") } for _, tt := range lookupGooglePublicDNSAddrTests { names, err := LookupAddr(tt.addr) if err != nil { t.Fatal(err) } if len(names) == 0 { t.Error("got no record") } for _, name := range names { if !strings.HasSuffix(name, tt.name) { t.Errorf("got %s; want a record containing %s", name, tt.name) } } } }
func TestLookupGoogleIP(t *testing.T) { if testing.Short() && testenv.Builder() == "" || !*testExternal { t.Skip("avoid external network") } if !supportsIPv4 || !*testIPv4 { t.Skip("IPv4 is required") } for _, tt := range lookupGoogleIPTests { ips, err := LookupIP(tt.name) if err != nil { t.Fatal(err) } if len(ips) == 0 { t.Error("got no record") } for _, ip := range ips { if ip.To4() == nil && ip.To16() == nil { t.Errorf("got %v; want an IP address", ip) } } } }
func TestLookupGoogleHost(t *testing.T) { if testing.Short() && testenv.Builder() == "" || !*testExternal { t.Skip("avoid external network") } if !supportsIPv4 || !*testIPv4 { t.Skip("IPv4 is required") } for _, tt := range lookupGoogleHostTests { addrs, err := LookupHost(tt.name) if err != nil { t.Fatal(err) } if len(addrs) == 0 { t.Error("got no record") } for _, addr := range addrs { if ParseIP(addr) == nil { t.Errorf("got %q; want a literal IP address", addr) } } } }
func TestLookupGmailMX(t *testing.T) { if testing.Short() && testenv.Builder() == "" || !*testExternal { t.Skip("avoid external network") } if !supportsIPv4 || !*testIPv4 { t.Skip("IPv4 is required") } for _, tt := range lookupGmailMXTests { mxs, err := LookupMX(tt.name) if err != nil { t.Fatal(err) } if len(mxs) == 0 { t.Error("got no record") } for _, mx := range mxs { if !strings.HasSuffix(mx.Host, tt.host) { t.Errorf("got %v; want a record containing %s", mx, tt.host) } } } }
func TestLookupGmailTXT(t *testing.T) { if testing.Short() && testenv.Builder() == "" || !*testExternal { t.Skip("avoid external network") } if !supportsIPv4 || !*testIPv4 { t.Skip("IPv4 is required") } for _, tt := range lookupGmailTXTTests { txts, err := LookupTXT(tt.name) if err != nil { t.Fatal(err) } if len(txts) == 0 { t.Error("got no record") } for _, txt := range txts { if !strings.Contains(txt, tt.txt) || (!strings.HasSuffix(txt, tt.host) && !strings.HasSuffix(txt, tt.host+".")) { t.Errorf("got %s; want a record containing %s, %s", txt, tt.txt, tt.host) } } } }
// wantLoadLibraryEx reports whether we expect LoadLibraryEx to work for tests. func wantLoadLibraryEx() bool { return testenv.Builder() == "windows-amd64-gce" || testenv.Builder() == "windows-386-gce" }
// Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package big import ( "fmt" "internal/testenv" "math/rand" "strings" "testing" ) var isRaceBuilder = strings.HasSuffix(testenv.Builder(), "-race") type funWW func(x, y, c Word) (z1, z0 Word) type argWW struct { x, y, c, z1, z0 Word } var sumWW = []argWW{ {0, 0, 0, 0, 0}, {0, 1, 0, 0, 1}, {0, 0, 1, 0, 1}, {0, 1, 1, 0, 2}, {12345, 67890, 0, 0, 80235}, {12345, 67890, 1, 0, 80236}, {_M, 1, 0, 1, 0}, {_M, 0, 1, 1, 0}, {_M, 1, 1, 1, 1},
func TestDialCancel(t *testing.T) { if runtime.GOOS == "plan9" || runtime.GOOS == "nacl" { // plan9 is not implemented and nacl doesn't have // external network access. t.Skipf("skipping on %s", runtime.GOOS) } onGoBuildFarm := testenv.Builder() != "" if testing.Short() && !onGoBuildFarm { t.Skip("skipping in short mode") } blackholeIPPort := JoinHostPort(slowDst4, "1234") if !supportsIPv4 { blackholeIPPort = JoinHostPort(slowDst6, "1234") } ticker := time.NewTicker(10 * time.Millisecond) defer ticker.Stop() const cancelTick = 5 // the timer tick we cancel the dial at const timeoutTick = 100 var d Dialer cancel := make(chan struct{}) d.Cancel = cancel errc := make(chan error, 1) connc := make(chan Conn, 1) go func() { if c, err := d.Dial("tcp", blackholeIPPort); err != nil { errc <- err } else { connc <- c } }() ticks := 0 for { select { case <-ticker.C: ticks++ if ticks == cancelTick { close(cancel) } if ticks == timeoutTick { t.Fatal("timeout waiting for dial to fail") } case c := <-connc: c.Close() t.Fatal("unexpected successful connection") case err := <-errc: if perr := parseDialError(err); perr != nil { t.Error(perr) } if ticks < cancelTick { t.Fatalf("dial error after %d ticks (%d before cancel sent): %v", ticks, cancelTick-ticks, err) } if oe, ok := err.(*OpError); !ok || oe.Err != errCanceled { t.Fatalf("dial error = %v (%T); want OpError with Err == errCanceled", err, err) } return // success. } } }
func TestDialCancel(t *testing.T) { switch testenv.Builder() { case "linux-arm64-buildlet": t.Skip("skipping on linux-arm64-buildlet; incompatible network config? issue 15191") case "": testenv.MustHaveExternalNetwork(t) } if runtime.GOOS == "nacl" { // nacl doesn't have external network access. t.Skipf("skipping on %s", runtime.GOOS) } blackholeIPPort := JoinHostPort(slowDst4, "1234") if !supportsIPv4 { blackholeIPPort = JoinHostPort(slowDst6, "1234") } ticker := time.NewTicker(10 * time.Millisecond) defer ticker.Stop() const cancelTick = 5 // the timer tick we cancel the dial at const timeoutTick = 100 var d Dialer cancel := make(chan struct{}) d.Cancel = cancel errc := make(chan error, 1) connc := make(chan Conn, 1) go func() { if c, err := d.Dial("tcp", blackholeIPPort); err != nil { errc <- err } else { connc <- c } }() ticks := 0 for { select { case <-ticker.C: ticks++ if ticks == cancelTick { close(cancel) } if ticks == timeoutTick { t.Fatal("timeout waiting for dial to fail") } case c := <-connc: c.Close() t.Fatal("unexpected successful connection") case err := <-errc: if perr := parseDialError(err); perr != nil { t.Error(perr) } if ticks < cancelTick { t.Fatalf("dial error after %d ticks (%d before cancel sent): %v", ticks, cancelTick-ticks, err) } if oe, ok := err.(*OpError); !ok || oe.Err != errCanceled { t.Fatalf("dial error = %v (%T); want OpError with Err == errCanceled", err, err) } return // success. } } }