Skip to content
This repository was archived by the owner on Oct 6, 2023. It is now read-only.

Commit 1efbac2

Browse files
committed
bring on the weird
1 parent 330b349 commit 1efbac2

File tree

4 files changed

+8
-296
lines changed

4 files changed

+8
-296
lines changed

client.go

+2-187
Original file line numberDiff line numberDiff line change
@@ -1,191 +1,6 @@
1-
// Package kafkatest provides a package intended for running tests
2-
// that require a Kafka backend.
31
package kafkatest
42

53
import (
6-
"crypto/rand"
7-
"fmt"
8-
"log"
9-
"net"
10-
"os"
11-
"strconv"
12-
"strings"
13-
"time"
14-
15-
"github.com/Shopify/sarama"
16-
"gopkg.in/retry.v1"
4+
_ "github.com/Shopify/sarama"
5+
_ "gopkg.in/retry.v1"
176
)
18-
19-
var ErrDisabled = fmt.Errorf("kafka tests are disabled")
20-
21-
// New connects to a Kafka instance and returns a Kafka
22-
// instance that uses it.
23-
//
24-
// The following environment variables can be used to
25-
// configure the connection parameters:
26-
//
27-
// - $KAFKA_DISABLE
28-
// A boolean as parsed by strconv.ParseBool. If this is true,
29-
// New will return ErrDisabled.
30-
// - $KAFKA_ADDRS
31-
// A comma-separate list of Kafka broker addresses in host:port
32-
// form. If this is empty, localhost:9092 will be used.
33-
// The list of address can be discovered by calling Client.Addrs.
34-
// - $KAFKA_USERNAME, $KAFKA_PASWORD
35-
// The username and password to use for SASL authentication.
36-
// When $KAFKA_USERNAME is non-empty, SASL will be
37-
// enabled.
38-
// - $KAFKA_USE_TLS
39-
// A boolean as parsed by strconv.ParseBool. If this
40-
// is true, a secure TLS connection will be used.
41-
//
42-
// - $KAFKA_TIMEOUT
43-
// The maximum duration to wait when trying to connect
44-
// to Kakfa. Defaults to "30s".
45-
//
46-
// The returned Kafka instance must be closed after use.
47-
func New() (*Kafka, error) {
48-
disabled, err := boolVar("KAFKA_DISABLE")
49-
if err != nil {
50-
return nil, fmt.Errorf("bad value for $KAFKA_DISABLE: %v", err)
51-
}
52-
if disabled {
53-
return nil, ErrDisabled
54-
}
55-
addrsStr := os.Getenv("KAFKA_ADDRS")
56-
if addrsStr == "" {
57-
addrsStr = "localhost:9092"
58-
}
59-
_, err = net.Dial("tcp", addrsStr)
60-
log.Printf("in kafkatest: net.Dial %q: %v", addrsStr, err)
61-
addrs := strings.Split(addrsStr, ",")
62-
useTLS, err := boolVar("KAFKA_USE_TLS")
63-
if err != nil {
64-
return nil, fmt.Errorf("bad value for KAFKA_USE_TLS: %v", err)
65-
}
66-
client := &Kafka{
67-
addrs: addrs,
68-
useTLS: useTLS,
69-
saslUser: os.Getenv("KAFKA_USERNAME"),
70-
saslPassword: os.Getenv("KAFKA_PASSWORD"),
71-
}
72-
// The cluster might not be available immediately, so try
73-
// for a while before giving up.
74-
retryLimit := 30 * time.Second
75-
if limit := os.Getenv("KAFKA_TIMEOUT"); limit != "" {
76-
retryLimit, err = time.ParseDuration(limit)
77-
if err != nil {
78-
return nil, fmt.Errorf("bad value for KAFKA_TIMEOUT: %v", err)
79-
}
80-
}
81-
retryStrategy := retry.LimitTime(retryLimit, retry.Exponential{
82-
Initial: time.Millisecond,
83-
MaxDelay: time.Second,
84-
})
85-
for a := retry.Start(retryStrategy, nil); a.Next(); {
86-
admin, err := sarama.NewClusterAdmin(addrs, client.Config())
87-
if err == nil {
88-
client.admin = admin
89-
break
90-
}
91-
if !a.More() {
92-
return nil, fmt.Errorf("cannot connect to Kafka cluster at %q after %v: %v", addrs, retryLimit, err)
93-
}
94-
}
95-
return client, nil
96-
}
97-
98-
// Kafka represents a connection to a Kafka cluster.
99-
type Kafka struct {
100-
addrs []string
101-
useTLS bool
102-
saslUser string
103-
saslPassword string
104-
admin sarama.ClusterAdmin
105-
topics []string
106-
}
107-
108-
// Config returns a sarama configuration that will
109-
// use connection parameters defined in the environment
110-
// variables described in New.
111-
func (k *Kafka) Config() *sarama.Config {
112-
cfg := sarama.NewConfig()
113-
k.InitConfig(cfg)
114-
return cfg
115-
}
116-
117-
// InitConfig is similar to Config, except that instead of
118-
// returning a new configuration, it configures an existing
119-
// one.
120-
func (k *Kafka) InitConfig(cfg *sarama.Config) {
121-
if cfg.Version == sarama.MinVersion {
122-
cfg.Version = sarama.V1_0_0_0
123-
}
124-
cfg.Net.TLS.Enable = k.useTLS
125-
if k.saslUser != "" {
126-
cfg.Net.SASL.Enable = true
127-
cfg.Net.SASL.User = k.saslUser
128-
cfg.Net.SASL.Password = k.saslPassword
129-
}
130-
}
131-
132-
// Addrs returns the configured Kakfa broker addresses.
133-
func (k *Kafka) Addrs() []string {
134-
return k.addrs
135-
}
136-
137-
// NewTopic creates a new Kafka topic with a random name and
138-
// single partition. It returns the topic's name. The topic will be deleted
139-
// when c.Close is called.
140-
//
141-
// NewTopic panics if the topic cannot be created.
142-
func (k *Kafka) NewTopic() string {
143-
if k.admin == nil {
144-
panic("cannot create topic with closed kafkatest.Kafka instance")
145-
}
146-
topic := randomName("kafkatest-")
147-
if err := k.admin.CreateTopic(topic, &sarama.TopicDetail{
148-
NumPartitions: 1,
149-
ReplicationFactor: 1,
150-
}, false); err != nil {
151-
panic(fmt.Errorf("cannot create topic %q: %v", topic, err))
152-
}
153-
k.topics = append(k.topics, topic)
154-
return topic
155-
}
156-
157-
// Close closes the client connection and removes any topics
158-
// created by Topic. This method may be called more than once.
159-
func (k *Kafka) Close() error {
160-
if k.admin == nil {
161-
return nil
162-
}
163-
for ; len(k.topics) != 0; k.topics = k.topics[1:] {
164-
if err := k.admin.DeleteTopic(k.topics[0]); err != nil {
165-
return fmt.Errorf("cannot delete topic %q: %v", k.topics[0], err)
166-
}
167-
}
168-
k.admin.Close()
169-
k.admin = nil
170-
return nil
171-
}
172-
173-
func boolVar(envVar string) (bool, error) {
174-
s := os.Getenv(envVar)
175-
if s == "" {
176-
return false, nil
177-
}
178-
b, err := strconv.ParseBool(s)
179-
if err != nil {
180-
return false, fmt.Errorf("invalid boolean value %q (possible values are: 1, t, T, TRUE, true, True, 0, f, F, FALSE)", s)
181-
}
182-
return b, nil
183-
}
184-
185-
func randomName(prefix string) string {
186-
buf := make([]byte, 8)
187-
if _, err := rand.Read(buf); err != nil {
188-
panic(err)
189-
}
190-
return fmt.Sprintf("%s%x", prefix, buf)
191-
}

client_test.go

+6-82
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,16 @@
11
package kafkatest_test
22

33
import (
4-
"log"
4+
"net"
55
"os"
66
"testing"
7-
"time"
87

9-
"github.com/Shopify/sarama"
10-
qt "github.com/frankban/quicktest"
11-
12-
"github.com/heetch/kafkatest"
8+
_ "github.com/heetch/kafkatest"
139
)
1410

15-
func TestNew(t *testing.T) {
16-
sarama.Logger = log.New(os.Stderr, "[Sarama] ", log.LstdFlags)
17-
18-
c := qt.New(t)
19-
k, err := kafkatest.New()
20-
c.Assert(err, qt.Equals, nil)
21-
22-
log.Printf("************** succeeded in making initial connection")
23-
24-
// Produce a message to a new topic.
25-
cfg := k.Config()
26-
cfg.Producer.Return.Successes = true
27-
cfg.Producer.Return.Errors = true
28-
29-
producer, err := sarama.NewSyncProducer(k.Addrs(), cfg)
30-
c.Assert(err, qt.Equals, nil, qt.Commentf("addrs: %q", k.Addrs()))
31-
defer producer.Close()
32-
topic := k.NewTopic()
33-
34-
// Check that the topic has actually been created.
35-
admin, err := sarama.NewClusterAdmin(k.Addrs(), cfg)
36-
c.Assert(err, qt.Equals, nil)
37-
defer admin.Close()
38-
topics, err := admin.ListTopics()
39-
c.Assert(err, qt.Equals, nil)
40-
_, ok := topics[topic]
41-
c.Assert(ok, qt.Equals, true)
42-
43-
// Produce a message to the topic.
44-
_, offset, err := producer.SendMessage(&sarama.ProducerMessage{
45-
Topic: topic,
46-
Key: sarama.StringEncoder("key"),
47-
Value: sarama.StringEncoder("value"),
48-
})
49-
c.Assert(err, qt.Equals, nil)
50-
c.Assert(offset, qt.Equals, int64(0))
51-
52-
// Check that we can consume the message we just produced.
53-
consumer, err := sarama.NewConsumer(k.Addrs(), cfg)
54-
c.Assert(err, qt.Equals, nil)
55-
defer consumer.Close()
56-
pconsumer, err := consumer.ConsumePartition(topic, 0, sarama.OffsetOldest)
57-
c.Assert(err, qt.Equals, nil)
58-
defer pconsumer.Close()
59-
select {
60-
case m := <-pconsumer.Messages():
61-
c.Check(string(m.Key), qt.Equals, "key")
62-
c.Check(string(m.Value), qt.Equals, "value")
63-
case <-time.After(10 * time.Second):
64-
c.Fatal("timed out waiting for message")
11+
func TestFoo(t *testing.T) {
12+
_, err := net.Dial("tcp", os.Getenv("KAFKA_ADDRS"))
13+
if err != nil {
14+
t.Errorf("cannot dial: %v", err)
6515
}
66-
67-
// Close the Kafka instance and check that the
68-
// new topic has been removed.
69-
err = k.Close()
70-
c.Assert(err, qt.Equals, nil)
71-
topics, err = admin.ListTopics()
72-
c.Assert(err, qt.Equals, nil)
73-
_, ok = topics[topic]
74-
c.Assert(ok, qt.Equals, false)
75-
76-
// Check we can call Close again.
77-
err = k.Close()
78-
c.Assert(err, qt.Equals, nil)
79-
}
80-
81-
func TestDisabled(t *testing.T) {
82-
c := qt.New(t)
83-
c.Setenv("KAFKA_DISABLE", "1")
84-
k, err := kafkatest.New()
85-
c.Assert(err, qt.Equals, kafkatest.ErrDisabled)
86-
c.Assert(k, qt.IsNil)
87-
88-
c.Setenv("KAFKA_DISABLE", "bad")
89-
k, err = kafkatest.New()
90-
c.Assert(err, qt.ErrorMatches, `bad value for \$KAFKA_DISABLE: invalid boolean value "bad" \(possible values are: 1, t, T, TRUE, true, True, 0, f, F, FALSE\)`)
91-
c.Assert(k, qt.IsNil)
9216
}

go.mod

-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,5 @@ go 1.14
44

55
require (
66
github.com/Shopify/sarama v1.26.1
7-
github.com/frankban/quicktest v1.7.2
8-
github.com/klauspost/cpuid v1.2.1 // indirect
97
gopkg.in/retry.v1 v1.0.3
108
)

go.sum

-25
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
1-
github.com/Shopify/sarama v1.24.1 h1:svn9vfN3R1Hz21WR2Gj0VW9ehaDGkiOS+VqlIcZOkMI=
2-
github.com/Shopify/sarama v1.24.1/go.mod h1:fGP8eQ6PugKEI0iUETYYtnP6d1pH/bdDMTel1X5ajsU=
31
github.com/Shopify/sarama v1.26.1 h1:3jnfWKD7gVwbB1KSy/lE0szA9duPuSFLViK0o/d3DgA=
42
github.com/Shopify/sarama v1.26.1/go.mod h1:NbSGBSSndYaIhRcBtY9V0U7AyH+x71bG668AuWys/yU=
53
github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc=
64
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
75
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
86
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
97
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
10-
github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU=
11-
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
128
github.com/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q=
139
github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
1410
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw=
@@ -18,67 +14,48 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP
1814
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
1915
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
2016
github.com/frankban/quicktest v1.2.2/go.mod h1:Qh/WofXFeiAFII1aEBu529AtJo6Zg2VHscnEsbBnJ20=
21-
github.com/frankban/quicktest v1.4.1 h1:Wv2VwvNn73pAdFIVUQRXYDFp31lXKbqblIXo/Q5GPSg=
22-
github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ=
2317
github.com/frankban/quicktest v1.7.2 h1:2QxQoC1TS09S7fhCPsrvqYdvP1H5M1P1ih5ABm3BTYk=
2418
github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o=
2519
github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
2620
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
2721
github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
28-
github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
29-
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
3022
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
3123
github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
3224
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
33-
github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE=
34-
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
3525
github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=
3626
github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
37-
github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03 h1:FUwcHNlEqkqLjLBdCp5PRlCFijNjvcYANOZXzCfXwCM=
38-
github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o=
3927
github.com/jcmturner/gofork v1.0.0 h1:J7uCkflzTEhUZ64xqKnkDxq3kzc96ajM1Gli5ktUem8=
4028
github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o=
41-
github.com/klauspost/compress v1.8.2 h1:Bx0qjetmNjdFXASH02NSAREKpiaDwkO1DRZ3dV2KCcs=
42-
github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
4329
github.com/klauspost/compress v1.9.8 h1:VMAMUUOh+gaxKTMk+zqbjsSjsIcUcL/LF4o63i82QyA=
4430
github.com/klauspost/compress v1.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
45-
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
4631
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
4732
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
4833
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
4934
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
5035
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
5136
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
5237
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
53-
github.com/pierrec/lz4 v2.2.6+incompatible h1:6aCX4/YZ9v8q69hTyiR7dNLnTA3fgtKHVVW5BCd5Znw=
54-
github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
5538
github.com/pierrec/lz4 v2.4.1+incompatible h1:mFe7ttWaflA46Mhqh+jUfjp2qTbPYxLB2/OyBppH9dg=
5639
github.com/pierrec/lz4 v2.4.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
5740
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
5841
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
59-
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ=
60-
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
6142
github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563 h1:dY6ETXrvDG7Sa4vE8ZQG4yqWg6UnOcbqTAahkV813vQ=
6243
github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
6344
github.com/rogpeppe/clock v0.0.0-20190514195947-2896927a307a h1:3QH7VyOaaiUHNrA9Se4YQIRkDTCw1EJls9xTUCaCeRM=
6445
github.com/rogpeppe/clock v0.0.0-20190514195947-2896927a307a/go.mod h1:4r5QyqhjIWCcK8DO4KMclc5Iknq5qVBAlbYYzAbUScQ=
6546
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
66-
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
6747
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
6848
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
6949
github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
7050
github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
7151
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
72-
golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5 h1:bselrhR0Or1vomJZC8ZIjWtbDmn9OYFLX5Ik9alpJpE=
73-
golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
7452
golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72 h1:+ELyKg6m8UBf0nPFSqD0mi7zUfwPyXo23HNjMnXPz7w=
7553
golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
7654
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ=
7755
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
7856
golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI=
7957
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
8058
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
81-
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
8259
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
8360
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
8461
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
@@ -94,8 +71,6 @@ gopkg.in/jcmturner/dnsutils.v1 v1.0.1 h1:cIuC1OLRGZrld+16ZJvvZxVJeKPsvd5eUIvxfoN
9471
gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q=
9572
gopkg.in/jcmturner/goidentity.v3 v3.0.0 h1:1duIyWiTaYvVx3YX2CYtpJbUFd7/UuPYCfgXtQ3VTbI=
9673
gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4=
97-
gopkg.in/jcmturner/gokrb5.v7 v7.2.3 h1:hHMV/yKPwMnJhPuPx7pH2Uw/3Qyf+thJYlisUc44010=
98-
gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM=
9974
gopkg.in/jcmturner/gokrb5.v7 v7.5.0 h1:a9tsXlIDD9SKxotJMK3niV7rPZAJeX2aD/0yg3qlIrg=
10075
gopkg.in/jcmturner/gokrb5.v7 v7.5.0/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM=
10176
gopkg.in/jcmturner/rpc.v1 v1.1.0 h1:QHIUxTX1ISuAv9dD2wJ9HWQVuWDX/Zc0PfeC2tjc4rU=

0 commit comments

Comments
 (0)