Skip to content

Commit

Permalink
Merge pull request #30 from codecrafters-io/alpha-fixes-5
Browse files Browse the repository at this point in the history
Updates to kafka tester for DescribeTopicPartition extension
  • Loading branch information
ryan-gang authored Oct 4, 2024
2 parents a06631e + 7b4d5cf commit 643c60c
Show file tree
Hide file tree
Showing 9 changed files with 659 additions and 132 deletions.
8 changes: 4 additions & 4 deletions internal/assertions/apiversions_response_assertion.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,20 +53,20 @@ func (a ApiVersionsResponseAssertion) Evaluate(fields []string, AssertApiVersion
for _, actualApiVersionKey := range a.ActualValue.ApiKeys {
if actualApiVersionKey.ApiKey == expectedApiVersionKey.ApiKey {
found = true
if actualApiVersionKey.MaxVersion < expectedApiVersionKey.MinVersion {
return fmt.Errorf("Expected max version %v to be >= min version %v for %s", actualApiVersionKey.MaxVersion, actualApiVersionKey.MinVersion, apiKeyNames[expectedApiVersionKey.ApiKey])
if actualApiVersionKey.MinVersion > expectedApiVersionKey.MaxVersion {
return fmt.Errorf("Expected min version %v to be < max version %v for %s", actualApiVersionKey.MinVersion, expectedApiVersionKey.MaxVersion, apiKeyNames[expectedApiVersionKey.ApiKey])
}

// anything above or equal to expected minVersion is fine
if actualApiVersionKey.MinVersion < expectedApiVersionKey.MinVersion {
return fmt.Errorf("Expected API version %v to be supported for %s, got %v", expectedApiVersionKey.MaxVersion, apiKeyNames[expectedApiVersionKey.ApiKey], actualApiVersionKey.MaxVersion)
}
logger.Successf("✓ API version %v is supported for %s", actualApiVersionKey.MaxVersion, apiKeyNames[expectedApiVersionKey.ApiKey])
logger.Successf("✓ MinVersion for %s is <= %v & >= %v", apiKeyNames[expectedApiVersionKey.ApiKey], expectedApiVersionKey.MaxVersion, expectedApiVersionKey.MinVersion)

if actualApiVersionKey.MaxVersion < expectedApiVersionKey.MaxVersion {
return fmt.Errorf("Expected API version %v to be supported for %s, got %v", expectedApiVersionKey.MaxVersion, apiKeyNames[expectedApiVersionKey.ApiKey], actualApiVersionKey.MaxVersion)
}
logger.Successf("✓ API version %v is supported for %s", actualApiVersionKey.MinVersion, apiKeyNames[expectedApiVersionKey.ApiKey])
logger.Successf("✓ MaxVersion for %s is >= %v", apiKeyNames[expectedApiVersionKey.ApiKey], expectedApiVersionKey.MaxVersion)
}
}
if !found {
Expand Down
14 changes: 8 additions & 6 deletions internal/cluster_metadata_payload_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ func TestDecodeFeatureLevelRecordPayload(t *testing.T) {
assert.EqualValues(t, 0, featureLevelRecord.Version)

payload, ok := featureLevelRecord.Data.(*kafkaapi.FeatureLevelRecord)
assert.EqualValues(t, "metadata.version", payload.Name)
assert.EqualValues(t, 20, payload.FeatureLevel)
assert.True(t, ok)
assert.EqualValues(t, "metadata.version", payload.Name)
}
Expand Down Expand Up @@ -94,7 +96,7 @@ func TestDecodeEndTransactionRecordPayload(t *testing.T) {
}

func TestDecodeTopicRecordPayload(t *testing.T) {
hexdump := "01020004666f6fbfd99e5e3235455281f8d4af1741970c00"
hexdump := "0102000473617a0000000000004000800000000000009100"

b, err := hex.DecodeString(hexdump)
if err != nil {
Expand All @@ -111,12 +113,12 @@ func TestDecodeTopicRecordPayload(t *testing.T) {

payload, ok := topicRecord.Data.(*kafkaapi.TopicRecord)
assert.True(t, ok)
assert.EqualValues(t, "foo", payload.TopicName)
assert.EqualValues(t, "bfd99e5e-3235-4552-81f8-d4af1741970c", payload.TopicUUID)
assert.EqualValues(t, "saz", payload.TopicName)
assert.EqualValues(t, "00000000-0000-4000-8000-000000000091", payload.TopicUUID)
}

func TestDecodePartitionRecordPayload(t *testing.T) {
hexdump := "01030100000000bfd99e5e3235455281f8d4af1741970c020000000102000000010101000000010000000000000000020224973cbadd44cf874445a99619da3400"
hexdump := "0103010000000000000000000040008000000000000091020000000102000000010101000000010000000000000000021000000000004000800000000000000100"

b, err := hex.DecodeString(hexdump)
if err != nil {
Expand All @@ -134,15 +136,15 @@ func TestDecodePartitionRecordPayload(t *testing.T) {
payload, ok := partitionRecord.Data.(*kafkaapi.PartitionRecord)
assert.True(t, ok)
assert.EqualValues(t, 0, payload.PartitionID)
assert.EqualValues(t, "bfd99e5e-3235-4552-81f8-d4af1741970c", payload.TopicUUID)
assert.EqualValues(t, "00000000-0000-4000-8000-000000000091", payload.TopicUUID)
assert.EqualValues(t, []int32{1}, payload.Replicas)
assert.EqualValues(t, []int32{1}, payload.ISReplicas)
assert.EqualValues(t, []int32{}, payload.RemovingReplicas)
assert.EqualValues(t, []int32{}, payload.AddingReplicas)
assert.EqualValues(t, 1, payload.Leader)
assert.EqualValues(t, 0, payload.LeaderEpoch)
assert.EqualValues(t, 0, payload.PartitionEpoch)
assert.EqualValues(t, []string{"0224973c-badd-44cf-8744-45a99619da34"}, payload.Directories)
assert.EqualValues(t, []string{"10000000-0000-4000-8000-000000000001"}, payload.Directories)
}

func TestEncodeBeginTransactionRecordPayload(t *testing.T) {
Expand Down
3 changes: 2 additions & 1 deletion internal/stagep2.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func testDTPartitionWithUnknownTopic(stageHarness *test_case_harness.TestCaseHar
Body: kafkaapi.DescribeTopicPartitionsRequestBody{
Topics: []kafkaapi.TopicName{
{
Name: "unknown-topic",
Name: common.TOPIC_UNKOWN_NAME,
},
},
ResponsePartitionLimit: 1,
Expand All @@ -56,6 +56,7 @@ func testDTPartitionWithUnknownTopic(stageHarness *test_case_harness.TestCaseHar
if err != nil {
return err
}
// ToDo: log inside sendAndReceive, else in failure cases, we won't log any
logger.Debugf("Hexdump of sent \"DescribeTopicPartitions\" request: \n%v\n", GetFormattedHexdump(message))
logger.Debugf("Hexdump of received \"DescribeTopicPartitions\" response: \n%v\n", GetFormattedHexdump(response))

Expand Down
2 changes: 1 addition & 1 deletion internal/stages_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func normalizeTesterOutput(testerOutput []byte) []byte {
"topic_name": {regexp.MustCompile(`- .topic_name \([A-Za-z0-9 ]{1,}\)`)},
"next_cursor": {regexp.MustCompile(`- .next_cursor \(\{[A-Za-z0-9 ]{1,}\}\)`)},
"Messages": {regexp.MustCompile(`✓ Messages: \["[A-Za-z !]{1,}"\]`)},
"Topic Name": {regexp.MustCompile(`✓ TopicResponse\[[0-9]{1,}\] Topic Name: [A-Za-z]{3}`)},
"Topic Name": {regexp.MustCompile(`✓ TopicResponse\[[0-9]{1,}\] Topic Name: [A-Za-z]{3,}`)},
"Topic UUID": {regexp.MustCompile(`✓ TopicResponse\[[0-9]{1,}\] Topic UUID: [0-9 -]{1,}`)},
}

Expand Down
Loading

0 comments on commit 643c60c

Please sign in to comment.