测试来自GitHub.com/Shopify/sarama

问题描述

我正在尝试为配置了github.com/Shopify/saramaLogger的功能选项编写单元测试。像这样用Kafka运行Docker容器后,

docker run -p 2181:2181 -p 9092:9092 -e ADVERTISED_HOST=127.0.0.1  -e NUM_PARTITIONS=10 johnnypark/kafka-zookeeper

我正在尝试运行此程序:

package main

import (
    "bufio"
    "bytes"
    "io/ioutil"
    "log"

    "github.com/Shopify/sarama"
)

func main() {
    var b bytes.Buffer
    out := bufio.NewWriter(&b)

    sarama.Logger = log.New(out,"[Sarama] ",log.LstdFlags)

    if _,err := sarama.NewClient([]string{"localhost:9092"},sarama.NewConfig()); err != nil {
        log.Fatalln("NewClient:",err)
    }

    output,err := ioutil.ReadAll(&b)
    if err != nil {
        log.Fatalln("ReadAll:",err)
    }

    log.Printf("output: %s",output)
}

,我希望看到一些输出。但是,打印的输出为空:

> go run main.go
2020/09/25 16:44:58 output: 

通过对比,如果我将输出设置为os.Stderr

package main

import (
    "log"
    "os"

    "github.com/Shopify/sarama"
)

func main() {
    sarama.Logger = log.New(os.Stderr,err)
    }
}

我看到预期的输出输出到终端:

> go run main.go
[Sarama] 2020/09/25 16:46:04 Initializing new client
[Sarama] 2020/09/25 16:46:04 ClientID is the default of 'sarama',you should consider setting it to something application-specific.
[Sarama] 2020/09/25 16:46:04 ClientID is the default of 'sarama',you should consider setting it to something application-specific.
[Sarama] 2020/09/25 16:46:04 client/metadata fetching metadata for all topics from broker localhost:9092
[Sarama] 2020/09/25 16:46:04 Connected to broker at localhost:9092 (unregistered)
[Sarama] 2020/09/25 16:46:04 client/brokers registered new broker #0 at 127.0.0.1:9092
[Sarama] 2020/09/25 16:46:04 Successfully initialized new client

似乎*bytes.Buffer并没有被ioutil.ReadAll()冲昏头脑?如何解决前面的示例,以使output是非空的?

解决方法

原来我只需要打电话

out.Flush()

ioutil.ReadAll()之前。现在输出如预期:

> go run main.go
2020/09/25 16:58:26 output: [Sarama] 2020/09/25 16:58:26 Initializing new client
[Sarama] 2020/09/25 16:58:26 ClientID is the default of 'sarama',you should consider setting it to something application-specific.
[Sarama] 2020/09/25 16:58:26 ClientID is the default of 'sarama',you should consider setting it to something application-specific.
[Sarama] 2020/09/25 16:58:26 client/metadata fetching metadata for all topics from broker localhost:9092
[Sarama] 2020/09/25 16:58:26 Connected to broker at localhost:9092 (unregistered)
[Sarama] 2020/09/25 16:58:26 client/brokers registered new broker #0 at 127.0.0.1:9092
[Sarama] 2020/09/25 16:58:26 Successfully initialized new client

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...