functional_client_test.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package sarama
  2. import (
  3. "fmt"
  4. "testing"
  5. "time"
  6. )
  7. func TestFuncConnectionFailure(t *testing.T) {
  8. config := NewConfig()
  9. config.Metadata.Retry.Max = 1
  10. _, err := NewClient([]string{"localhost:9000"}, config)
  11. if err != ErrOutOfBrokers {
  12. t.Fatal("Expected returned error to be ErrOutOfBrokers, but was: ", err)
  13. }
  14. }
  15. func TestFuncClientMetadata(t *testing.T) {
  16. checkKafkaAvailability(t)
  17. config := NewConfig()
  18. config.Metadata.Retry.Max = 1
  19. config.Metadata.Retry.Backoff = 10 * time.Millisecond
  20. client, err := NewClient(kafkaBrokers, config)
  21. if err != nil {
  22. t.Fatal(err)
  23. }
  24. if err := client.RefreshMetadata("unknown_topic"); err != ErrUnknownTopicOrPartition {
  25. t.Error("Expected ErrUnknownTopicOrPartition, got", err)
  26. }
  27. if _, err := client.Leader("unknown_topic", 0); err != ErrUnknownTopicOrPartition {
  28. t.Error("Expected ErrUnknownTopicOrPartition, got", err)
  29. }
  30. if _, err := client.Replicas("invalid/topic", 0); err != ErrUnknownTopicOrPartition {
  31. t.Error("Expected ErrUnknownTopicOrPartition, got", err)
  32. }
  33. partitions, err := client.Partitions("multi_partition")
  34. if err != nil {
  35. t.Error(err)
  36. }
  37. if len(partitions) != 2 {
  38. t.Errorf("Expected multi_partition topic to have 2 partitions, found %v", partitions)
  39. }
  40. partitions, err = client.Partitions("single_partition")
  41. if err != nil {
  42. t.Error(err)
  43. }
  44. if len(partitions) != 1 {
  45. t.Errorf("Expected single_partition topic to have 1 partitions, found %v", partitions)
  46. }
  47. safeClose(t, client)
  48. }
  49. func TestFuncClientCoordinator(t *testing.T) {
  50. checkKafkaVersion(t, "0.8.2")
  51. checkKafkaAvailability(t)
  52. client, err := NewClient(kafkaBrokers, nil)
  53. if err != nil {
  54. t.Fatal(err)
  55. }
  56. for i := 0; i < 10; i++ {
  57. broker, err := client.Coordinator(fmt.Sprintf("another_new_consumer_group_%d", i))
  58. if err != nil {
  59. t.Error(err)
  60. }
  61. if connected, err := broker.Connected(); !connected || err != nil {
  62. t.Errorf("Expected to coordinator %s broker to be properly connected.", broker.Addr())
  63. }
  64. }
  65. safeClose(t, client)
  66. }