diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 62cc20c9bef..09e5d735a0b 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -120,7 +120,7 @@ }, { "ImportPath": "github.com/jbenet/go-random", - "Rev": "e4585173eb8c47eea36c3dbff22f26f3f94d3586" + "Rev": "2e83344e7dc7898f94501665af34edd4aa95a013" }, { "ImportPath": "github.com/kr/binarydist", diff --git a/Godeps/_workspace/src/github.com/jbenet/go-random/lib.go b/Godeps/_workspace/src/github.com/jbenet/go-random/lib.go index 54867a752e2..48aa3716d2b 100644 --- a/Godeps/_workspace/src/github.com/jbenet/go-random/lib.go +++ b/Godeps/_workspace/src/github.com/jbenet/go-random/lib.go @@ -26,10 +26,10 @@ func WritePseudoRandomBytes(count int64, w io.Writer, seed int64) error { b = b[:bufsize] } - var n int64 - for i := int64(0); i < bufsize; i++ { - n = randmath.Int63() - for j := 0; j < 8 && i < bufsize; j++ { + var n uint32 + for i := int64(0); i < bufsize; { + n = randmath.Uint32() + for j := 0; j < 4 && i < bufsize; j++ { b[i] = byte(n & 0xff) n >>= 8 i++ diff --git a/cmd/ipfs2/main.go b/cmd/ipfs2/main.go index 5647f552eb1..f17913b5c5c 100644 --- a/cmd/ipfs2/main.go +++ b/cmd/ipfs2/main.go @@ -131,7 +131,7 @@ func (i *cmdInvocation) Run() (output io.Reader, err error) { if err != nil { return nil, err } - if debug || u.GetenvBool("DEBUG") { + if debug || u.GetenvBool("DEBUG") || os.Getenv("IPFS_LOGGING") == "debug" { u.Debug = true u.SetAllLoggers(logging.DEBUG) } diff --git a/core/core.go b/core/core.go index 75fd7d2c8b1..c8553804454 100644 --- a/core/core.go +++ b/core/core.go @@ -15,6 +15,7 @@ import ( diag "github.com/jbenet/go-ipfs/diagnostics" exchange "github.com/jbenet/go-ipfs/exchange" bitswap "github.com/jbenet/go-ipfs/exchange/bitswap" + bsnet "github.com/jbenet/go-ipfs/exchange/bitswap/network" merkledag "github.com/jbenet/go-ipfs/merkledag" namesys "github.com/jbenet/go-ipfs/namesys" inet "github.com/jbenet/go-ipfs/net" @@ -150,8 +151,8 @@ func NewIpfsNode(cfg *config.Config, online bool) (n *IpfsNode, err error) { // setup exchange service const alwaysSendToPeer = true // use YesManStrategy - n.Exchange = bitswap.NetMessageSession(ctx, n.Identity, n.Network, exchangeService, n.Routing, n.Datastore, alwaysSendToPeer) - // ok, this function call is ridiculous o/ consider making it simpler. + bitswapNetwork := bsnet.NewFromIpfsNetwork(exchangeService, n.Network) + n.Exchange = bitswap.New(ctx, n.Identity, bitswapNetwork, n.Routing, n.Datastore, alwaysSendToPeer) go initConnections(ctx, n.Config, n.Peerstore, dhtRouting) } diff --git a/exchange/bitswap/bitswap.go b/exchange/bitswap/bitswap.go index 7e3a57ec1fa..529c7868984 100644 --- a/exchange/bitswap/bitswap.go +++ b/exchange/bitswap/bitswap.go @@ -15,24 +15,21 @@ import ( bsnet "github.com/jbenet/go-ipfs/exchange/bitswap/network" notifications "github.com/jbenet/go-ipfs/exchange/bitswap/notifications" strategy "github.com/jbenet/go-ipfs/exchange/bitswap/strategy" - inet "github.com/jbenet/go-ipfs/net" peer "github.com/jbenet/go-ipfs/peer" u "github.com/jbenet/go-ipfs/util" ) var log = u.Logger("bitswap") -// NetMessageSession initializes a BitSwap session that communicates over the -// provided NetMessage service. +// New initializes a BitSwap instance that communicates over the +// provided BitSwapNetwork. This function registers the returned instance as +// the network delegate. // Runs until context is cancelled -func NetMessageSession(ctx context.Context, p peer.Peer, - net inet.Network, srv inet.Service, directory bsnet.Routing, +func New(ctx context.Context, p peer.Peer, + network bsnet.BitSwapNetwork, routing bsnet.Routing, d ds.ThreadSafeDatastore, nice bool) exchange.Interface { - networkAdapter := bsnet.NetMessageAdapter(srv, net, nil) - notif := notifications.New() - go func() { select { case <-ctx.Done(): @@ -44,11 +41,11 @@ func NetMessageSession(ctx context.Context, p peer.Peer, blockstore: blockstore.NewBlockstore(d), notifications: notif, strategy: strategy.New(nice), - routing: directory, - sender: networkAdapter, + routing: routing, + sender: network, wantlist: u.NewKeySet(), } - networkAdapter.SetDelegate(bs) + network.SetDelegate(bs) return bs } @@ -57,7 +54,7 @@ func NetMessageSession(ctx context.Context, p peer.Peer, type bitswap struct { // sender delivers messages on behalf of the session - sender bsnet.Adapter + sender bsnet.BitSwapNetwork // blockstore is the local database // NB: ensure threadsafety diff --git a/exchange/bitswap/bitswap_test.go b/exchange/bitswap/bitswap_test.go index 4a01444e53f..a851f0f56db 100644 --- a/exchange/bitswap/bitswap_test.go +++ b/exchange/bitswap/bitswap_test.go @@ -90,6 +90,9 @@ func TestGetBlockFromPeerAfterPeerAnnounces(t *testing.T) { } func TestSwarm(t *testing.T) { + if testing.Short() { + t.SkipNow() + } net := tn.VirtualNetwork() rs := mock.VirtualRoutingServer() sg := NewSessionGenerator(net, rs) diff --git a/exchange/bitswap/network/interface.go b/exchange/bitswap/network/interface.go index 1d3fc63a5d8..44557b06440 100644 --- a/exchange/bitswap/network/interface.go +++ b/exchange/bitswap/network/interface.go @@ -8,8 +8,8 @@ import ( u "github.com/jbenet/go-ipfs/util" ) -// Adapter provides network connectivity for BitSwap sessions -type Adapter interface { +// BitSwapNetwork provides network connectivity for BitSwap sessions +type BitSwapNetwork interface { // DialPeer ensures there is a connection to peer. DialPeer(context.Context, peer.Peer) error @@ -31,6 +31,7 @@ type Adapter interface { SetDelegate(Receiver) } +// Implement Receiver to receive messages from the BitSwapNetwork type Receiver interface { ReceiveMessage( ctx context.Context, sender peer.Peer, incoming bsmsg.BitSwapMessage) ( @@ -39,7 +40,6 @@ type Receiver interface { ReceiveError(error) } -// TODO rename -> Router? type Routing interface { // FindProvidersAsync returns a channel of providers for the given key FindProvidersAsync(context.Context, u.Key, int) <-chan peer.Peer diff --git a/exchange/bitswap/network/net_message_adapter.go b/exchange/bitswap/network/ipfs_impl.go similarity index 53% rename from exchange/bitswap/network/net_message_adapter.go rename to exchange/bitswap/network/ipfs_impl.go index f3fe1b257ff..c94a4859f7b 100644 --- a/exchange/bitswap/network/net_message_adapter.go +++ b/exchange/bitswap/network/ipfs_impl.go @@ -4,31 +4,32 @@ import ( "errors" context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context" - "github.com/jbenet/go-ipfs/util" bsmsg "github.com/jbenet/go-ipfs/exchange/bitswap/message" inet "github.com/jbenet/go-ipfs/net" netmsg "github.com/jbenet/go-ipfs/net/message" peer "github.com/jbenet/go-ipfs/peer" + util "github.com/jbenet/go-ipfs/util" ) -var log = util.Logger("net_message_adapter") +var log = util.Logger("bitswap_network") -// NetMessageAdapter wraps a NetMessage network service -func NetMessageAdapter(s inet.Service, n inet.Network, r Receiver) Adapter { - adapter := impl{ - nms: s, - net: n, - receiver: r, +// NewFromIpfsNetwork returns a BitSwapNetwork supported by underlying IPFS +// Dialer & Service +func NewFromIpfsNetwork(s inet.Service, dialer inet.Dialer) BitSwapNetwork { + bitswapNetwork := impl{ + service: s, + dialer: dialer, } - s.SetHandler(&adapter) - return &adapter + s.SetHandler(&bitswapNetwork) + return &bitswapNetwork } -// implements an Adapter that integrates with a NetMessage network service +// impl transforms the ipfs network interface, which sends and receives +// NetMessage objects, into the bitswap network interface. type impl struct { - nms inet.Service - net inet.Network + service inet.Service + dialer inet.Dialer // inbound messages from the network are forwarded to the receiver receiver Receiver @@ -36,30 +37,30 @@ type impl struct { // HandleMessage marshals and unmarshals net messages, forwarding them to the // BitSwapMessage receiver -func (adapter *impl) HandleMessage( +func (bsnet *impl) HandleMessage( ctx context.Context, incoming netmsg.NetMessage) netmsg.NetMessage { - if adapter.receiver == nil { + if bsnet.receiver == nil { return nil } received, err := bsmsg.FromNet(incoming) if err != nil { - go adapter.receiver.ReceiveError(err) + go bsnet.receiver.ReceiveError(err) return nil } - p, bsmsg := adapter.receiver.ReceiveMessage(ctx, incoming.Peer(), received) + p, bsmsg := bsnet.receiver.ReceiveMessage(ctx, incoming.Peer(), received) // TODO(brian): put this in a helper function if bsmsg == nil || p == nil { - adapter.receiver.ReceiveError(errors.New("ReceiveMessage returned nil peer or message")) + bsnet.receiver.ReceiveError(errors.New("ReceiveMessage returned nil peer or message")) return nil } outgoing, err := bsmsg.ToNet(p) if err != nil { - go adapter.receiver.ReceiveError(err) + go bsnet.receiver.ReceiveError(err) return nil } @@ -67,11 +68,11 @@ func (adapter *impl) HandleMessage( return outgoing } -func (adapter *impl) DialPeer(ctx context.Context, p peer.Peer) error { - return adapter.net.DialPeer(ctx, p) +func (bsnet *impl) DialPeer(ctx context.Context, p peer.Peer) error { + return bsnet.dialer.DialPeer(ctx, p) } -func (adapter *impl) SendMessage( +func (bsnet *impl) SendMessage( ctx context.Context, p peer.Peer, outgoing bsmsg.BitSwapMessage) error { @@ -80,10 +81,10 @@ func (adapter *impl) SendMessage( if err != nil { return err } - return adapter.nms.SendMessage(ctx, nmsg) + return bsnet.service.SendMessage(ctx, nmsg) } -func (adapter *impl) SendRequest( +func (bsnet *impl) SendRequest( ctx context.Context, p peer.Peer, outgoing bsmsg.BitSwapMessage) (bsmsg.BitSwapMessage, error) { @@ -92,13 +93,13 @@ func (adapter *impl) SendRequest( if err != nil { return nil, err } - incomingMsg, err := adapter.nms.SendRequest(ctx, outgoingMsg) + incomingMsg, err := bsnet.service.SendRequest(ctx, outgoingMsg) if err != nil { return nil, err } return bsmsg.FromNet(incomingMsg) } -func (adapter *impl) SetDelegate(r Receiver) { - adapter.receiver = r +func (bsnet *impl) SetDelegate(r Receiver) { + bsnet.receiver = r } diff --git a/exchange/bitswap/testnet/network.go b/exchange/bitswap/testnet/network.go index a7864c2a141..691b7cb4259 100644 --- a/exchange/bitswap/testnet/network.go +++ b/exchange/bitswap/testnet/network.go @@ -13,7 +13,7 @@ import ( ) type Network interface { - Adapter(peer.Peer) bsnet.Adapter + Adapter(peer.Peer) bsnet.BitSwapNetwork HasPeer(peer.Peer) bool @@ -43,7 +43,7 @@ type network struct { clients map[util.Key]bsnet.Receiver } -func (n *network) Adapter(p peer.Peer) bsnet.Adapter { +func (n *network) Adapter(p peer.Peer) bsnet.BitSwapNetwork { client := &networkClient{ local: p, network: n, diff --git a/fuse/ipns/ipns_test.go b/fuse/ipns/ipns_test.go index 4f5ba611537..7d8f0e8d134 100644 --- a/fuse/ipns/ipns_test.go +++ b/fuse/ipns/ipns_test.go @@ -83,6 +83,9 @@ func setupIpnsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *fstest.M // Test writing a file and reading it back func TestIpnsBasicIO(t *testing.T) { + if testing.Short() { + t.SkipNow() + } _, mnt := setupIpnsTest(t, nil) defer mnt.Close() @@ -101,6 +104,9 @@ func TestIpnsBasicIO(t *testing.T) { // Test to make sure file changes persist over mounts of ipns func TestFilePersistence(t *testing.T) { + if testing.Short() { + t.SkipNow() + } node, mnt := setupIpnsTest(t, nil) fname := "/local/atestfile" @@ -126,6 +132,9 @@ func TestFilePersistence(t *testing.T) { // Test to make sure the filesystem reports file sizes correctly func TestFileSizeReporting(t *testing.T) { + if testing.Short() { + t.SkipNow() + } _, mnt := setupIpnsTest(t, nil) defer mnt.Close() @@ -144,6 +153,9 @@ func TestFileSizeReporting(t *testing.T) { // Test to make sure you cant create multiple entries with the same name func TestDoubleEntryFailure(t *testing.T) { + if testing.Short() { + t.SkipNow() + } _, mnt := setupIpnsTest(t, nil) defer mnt.Close() @@ -160,6 +172,9 @@ func TestDoubleEntryFailure(t *testing.T) { } func TestAppendFile(t *testing.T) { + if testing.Short() { + t.SkipNow() + } _, mnt := setupIpnsTest(t, nil) defer mnt.Close() @@ -198,6 +213,9 @@ func TestAppendFile(t *testing.T) { } func TestFastRepublish(t *testing.T) { + if testing.Short() { + t.SkipNow() + } // make timeout noticeable. osrt := shortRepublishTimeout @@ -299,6 +317,9 @@ func TestFastRepublish(t *testing.T) { // Test writing a medium sized file one byte at a time func TestMultiWrite(t *testing.T) { + if testing.Short() { + t.SkipNow() + } _, mnt := setupIpnsTest(t, nil) defer mnt.Close() diff --git a/importer/chunk/splitting_test.go b/importer/chunk/splitting_test.go index 0ecb143cbde..612da4d0972 100644 --- a/importer/chunk/splitting_test.go +++ b/importer/chunk/splitting_test.go @@ -21,6 +21,9 @@ func copyBuf(buf []byte) []byte { } func TestSizeSplitterIsDeterministic(t *testing.T) { + if testing.Short() { + t.SkipNow() + } test := func() { bufR := randBuf(t, 10000000) // crank this up to satisfy yourself. diff --git a/importer/importer_test.go b/importer/importer_test.go index 0b563a19cda..e8177aa919d 100644 --- a/importer/importer_test.go +++ b/importer/importer_test.go @@ -19,6 +19,9 @@ import ( // These tests tests a combination of unixfs/io/dagreader and importer/chunk. // Maybe split them up somehow? func TestBuildDag(t *testing.T) { + if testing.Short() { + t.SkipNow() + } td := os.TempDir() fi, err := os.Create(td + "/tmpfi") if err != nil { @@ -40,6 +43,9 @@ func TestBuildDag(t *testing.T) { //Test where calls to read are smaller than the chunk size func TestSizeBasedSplit(t *testing.T) { + if testing.Short() { + t.SkipNow() + } bs := &chunk.SizeSplitter{Size: 512} testFileConsistency(t, bs, 32*512) bs = &chunk.SizeSplitter{Size: 4096} @@ -118,10 +124,16 @@ func arrComp(a, b []byte) error { } func TestMaybeRabinConsistency(t *testing.T) { + if testing.Short() { + t.SkipNow() + } testFileConsistency(t, chunk.NewMaybeRabin(4096), 256*4096) } func TestRabinBlockSize(t *testing.T) { + if testing.Short() { + t.SkipNow() + } buf := new(bytes.Buffer) nbytes := 1024 * 1024 io.CopyN(buf, rand.Reader, int64(nbytes)) diff --git a/net/conn/conn_test.go b/net/conn/conn_test.go index 803b517a721..2852d29f7b6 100644 --- a/net/conn/conn_test.go +++ b/net/conn/conn_test.go @@ -83,7 +83,9 @@ func TestCancel(t *testing.T) { } func TestCloseLeak(t *testing.T) { - // t.Skip("Skipping in favor of another test") + if testing.Short() { + t.SkipNow() + } if os.Getenv("TRAVIS") == "true" { t.Skip("this doesn't work well on travis") diff --git a/net/conn/multiconn_test.go b/net/conn/multiconn_test.go index aa80cd4993a..b511d9a3b22 100644 --- a/net/conn/multiconn_test.go +++ b/net/conn/multiconn_test.go @@ -156,7 +156,9 @@ func setupMultiConns(t *testing.T, ctx context.Context) (a, b *MultiConn) { } func TestMulticonnSend(t *testing.T) { - // t.Skip("fooo") + if testing.Short() { + t.SkipNow() + } log.Info("TestMulticonnSend") ctx := context.Background() @@ -220,7 +222,9 @@ func TestMulticonnSend(t *testing.T) { } func TestMulticonnSendUnderlying(t *testing.T) { - // t.Skip("fooo") + if testing.Short() { + t.SkipNow() + } log.Info("TestMulticonnSendUnderlying") ctx := context.Background() diff --git a/net/conn/secure_conn_test.go b/net/conn/secure_conn_test.go index f7567148009..d345465acc5 100644 --- a/net/conn/secure_conn_test.go +++ b/net/conn/secure_conn_test.go @@ -105,7 +105,9 @@ func TestSecureCancel(t *testing.T) { } func TestSecureCloseLeak(t *testing.T) { - // t.Skip("Skipping in favor of another test") + if testing.Short() { + t.SkipNow() + } if os.Getenv("TRAVIS") == "true" { t.Skip("this doesn't work well on travis") } diff --git a/net/mux/mux_test.go b/net/mux/mux_test.go index 7ce0962478c..d445ff77901 100644 --- a/net/mux/mux_test.go +++ b/net/mux/mux_test.go @@ -103,6 +103,9 @@ func TestSimpleMuxer(t *testing.T) { } func TestSimultMuxer(t *testing.T) { + if testing.Short() { + t.SkipNow() + } // run muxer ctx, cancel := context.WithCancel(context.Background()) diff --git a/net/swarm/simul_test.go b/net/swarm/simul_test.go index 253d9784dd1..114a4dcbfcc 100644 --- a/net/swarm/simul_test.go +++ b/net/swarm/simul_test.go @@ -11,7 +11,9 @@ import ( ) func TestSimultOpen(t *testing.T) { - // t.Skip("skipping for another test") + if testing.Short() { + t.SkipNow() + } addrs := []string{ "/ip4/127.0.0.1/tcp/1244", @@ -61,6 +63,9 @@ func TestSimultOpenMany(t *testing.T) { } func TestSimultOpenFewStress(t *testing.T) { + if testing.Short() { + t.SkipNow() + } // t.Skip("skipping for another test") num := 10 diff --git a/net/swarm/swarm_test.go b/net/swarm/swarm_test.go index 4dd2a144806..4d948831741 100644 --- a/net/swarm/swarm_test.go +++ b/net/swarm/swarm_test.go @@ -167,6 +167,9 @@ func SubtestSwarm(t *testing.T, addrs []string, MsgNum int) { } func TestSwarm(t *testing.T) { + if testing.Short() { + t.SkipNow() + } // t.Skip("skipping for another test") addrs := []string{ diff --git a/peer/queue/queue_test.go b/peer/queue/queue_test.go index efaf2037edf..7bc1b42f17d 100644 --- a/peer/queue/queue_test.go +++ b/peer/queue/queue_test.go @@ -73,6 +73,9 @@ func newPeerTime(t time.Time) peer.Peer { } func TestSyncQueue(t *testing.T) { + if testing.Short() { + t.SkipNow() + } ctx := context.Background() pq := NewXORDistancePQ(u.Key("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31")) diff --git a/routing/dht/dht_test.go b/routing/dht/dht_test.go index ffbbef81981..133e28b5833 100644 --- a/routing/dht/dht_test.go +++ b/routing/dht/dht_test.go @@ -231,7 +231,9 @@ func TestProvides(t *testing.T) { } func TestProvidesAsync(t *testing.T) { - // t.Skip("skipping test to debug another") + if testing.Short() { + t.SkipNow() + } ctx := context.Background() u.Debug = false @@ -295,7 +297,9 @@ func TestProvidesAsync(t *testing.T) { } func TestLayeredGet(t *testing.T) { - // t.Skip("skipping test to debug another") + if testing.Short() { + t.SkipNow() + } ctx := context.Background() u.Debug = false @@ -347,7 +351,9 @@ func TestLayeredGet(t *testing.T) { } func TestFindPeer(t *testing.T) { - // t.Skip("skipping test to debug another") + if testing.Short() { + t.SkipNow() + } ctx := context.Background() u.Debug = false @@ -391,7 +397,9 @@ func TestFindPeer(t *testing.T) { } func TestConnectCollision(t *testing.T) { - // t.Skip("skipping test to debug another") + if testing.Short() { + t.SkipNow() + } runTimes := 10 diff --git a/routing/dht/ext_test.go b/routing/dht/ext_test.go index 1dabb5b6489..6be939bedd9 100644 --- a/routing/dht/ext_test.go +++ b/routing/dht/ext_test.go @@ -115,7 +115,9 @@ func (f *fauxNet) GetBandwidthTotals() (uint64, uint64) { func (f *fauxNet) Close() error { return nil } func TestGetFailures(t *testing.T) { - // t.Skip("skipping test because it makes a lot of output") + if testing.Short() { + t.SkipNow() + } ctx := context.Background() fn := &fauxNet{} @@ -211,7 +213,9 @@ func _randPeer() peer.Peer { } func TestNotFound(t *testing.T) { - // t.Skip("skipping test because it makes a lot of output") + if testing.Short() { + t.SkipNow() + } ctx := context.Background() fn := &fauxNet{} diff --git a/test/t0040-add-and-cat.sh b/test/t0040-add-and-cat.sh index 240346009d4..378a516e3a5 100755 --- a/test/t0040-add-and-cat.sh +++ b/test/t0040-add-and-cat.sh @@ -47,7 +47,7 @@ test_expect_success "generate 100MB file using go-random" ' ' test_expect_success "sha1 of the file looks ok" ' - echo "ae986dd159e4f014aee7409cdc2001ea74f618d1 mountdir/bigfile" >sha1_expected && + echo "885b197b01e0f7ff584458dc236cb9477d2e736d mountdir/bigfile" >sha1_expected && shasum mountdir/bigfile >sha1_actual && test_cmp sha1_expected sha1_actual ' @@ -57,7 +57,7 @@ test_expect_success "ipfs add bigfile succeeds" ' ' test_expect_success "ipfs add bigfile output looks good" ' - HASH="QmVm3Da371opC3hpsCLuYSozdyM6wRvu9UoUqoyW8u4LRq" && + HASH="QmWXysX1oysyjTqd5xGM2T1maBaVXnk5svQv4GKo5PsGPo" && echo "added $HASH $(pwd)/mountdir/bigfile" >expected && test_cmp expected actual ' @@ -67,7 +67,7 @@ test_expect_success "ipfs cat succeeds" ' ' test_expect_success "ipfs cat output looks good" ' - echo "ae986dd159e4f014aee7409cdc2001ea74f618d1 -" >sha1_expected && + echo "885b197b01e0f7ff584458dc236cb9477d2e736d -" >sha1_expected && test_cmp sha1_expected sha1_actual ' diff --git a/util/log.go b/util/log.go index 26025827bc6..4200c15a8b3 100644 --- a/util/log.go +++ b/util/log.go @@ -73,9 +73,8 @@ func SetupLogging() { // SetAllLoggers changes the logging.Level of all loggers to lvl func SetAllLoggers(lvl logging.Level) { logging.SetLevel(lvl, "") - for n, log := range loggers { + for n, _ := range loggers { logging.SetLevel(lvl, n) - log.Noticef("setting logger: %q to %v", n, lvl) } } diff --git a/util/util_test.go b/util/util_test.go index 08f3f120a1b..afd34b10ee4 100644 --- a/util/util_test.go +++ b/util/util_test.go @@ -29,6 +29,9 @@ func TestKey(t *testing.T) { } func TestByteChanReader(t *testing.T) { + if testing.Short() { + t.SkipNow() + } var data bytes.Buffer var data2 bytes.Buffer