config_test.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package sarama
  2. import (
  3. "os"
  4. "testing"
  5. "github.com/rcrowley/go-metrics"
  6. )
  7. func TestDefaultConfigValidates(t *testing.T) {
  8. config := NewConfig()
  9. if err := config.Validate(); err != nil {
  10. t.Error(err)
  11. }
  12. if config.MetricRegistry == nil {
  13. t.Error("Expected non nil metrics.MetricRegistry, got nil")
  14. }
  15. }
  16. func TestInvalidClientIDConfigValidates(t *testing.T) {
  17. config := NewConfig()
  18. config.ClientID = "foo:bar"
  19. if err := config.Validate(); string(err.(ConfigurationError)) != "ClientID is invalid" {
  20. t.Error("Expected invalid ClientID, got ", err)
  21. }
  22. }
  23. func TestEmptyClientIDConfigValidates(t *testing.T) {
  24. config := NewConfig()
  25. config.ClientID = ""
  26. if err := config.Validate(); string(err.(ConfigurationError)) != "ClientID is invalid" {
  27. t.Error("Expected invalid ClientID, got ", err)
  28. }
  29. }
  30. func TestLZ4ConfigValidation(t *testing.T) {
  31. config := NewConfig()
  32. config.Producer.Compression = CompressionLZ4
  33. if err := config.Validate(); string(err.(ConfigurationError)) != "lz4 compression requires Version >= V0_10_0_0" {
  34. t.Error("Expected invalid lz4/kakfa version error, got ", err)
  35. }
  36. config.Version = V0_10_0_0
  37. if err := config.Validate(); err != nil {
  38. t.Error("Expected lz4 to work, got ", err)
  39. }
  40. }
  41. // This example shows how to integrate with an existing registry as well as publishing metrics
  42. // on the standard output
  43. func ExampleConfig_metrics() {
  44. // Our application registry
  45. appMetricRegistry := metrics.NewRegistry()
  46. appGauge := metrics.GetOrRegisterGauge("m1", appMetricRegistry)
  47. appGauge.Update(1)
  48. config := NewConfig()
  49. // Use a prefix registry instead of the default local one
  50. config.MetricRegistry = metrics.NewPrefixedChildRegistry(appMetricRegistry, "sarama.")
  51. // Simulate a metric created by sarama without starting a broker
  52. saramaGauge := metrics.GetOrRegisterGauge("m2", config.MetricRegistry)
  53. saramaGauge.Update(2)
  54. metrics.WriteOnce(appMetricRegistry, os.Stdout)
  55. // Output:
  56. // gauge m1
  57. // value: 1
  58. // gauge sarama.m2
  59. // value: 2
  60. }