Skip to content

Commit 68f5916

Browse files
authored
Add support of new RD_ constants (#45)
* new constants * fix travis tests
1 parent b7f72c0 commit 68f5916

File tree

3 files changed

+170
-129
lines changed

3 files changed

+170
-129
lines changed

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ php:
77

88
before_install:
99
- sudo apt-get -y install gcc scala zookeeperd git
10-
- git clone --depth 1 --branch v1.5.2 https://github.com/edenhill/librdkafka.git
10+
- git clone --depth 1 --branch v1.8.2 https://github.com/edenhill/librdkafka.git
1111
- cd librdkafka
1212
- ./configure
1313
- make
@@ -17,7 +17,7 @@ before_install:
1717
- tar zxf kafka_2.11-2.3.0.tgz
1818

1919
install:
20-
- pecl install rdkafka
20+
- pecl install rdkafka-5.0.2
2121
- composer self-update
2222
- composer install
2323

stubs/constants.php

Lines changed: 76 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<?php
22

3+
/** @link https://arnaud.le-blanc.net/php-rdkafka-doc/phpdoc/rdkafka.constants.html */
4+
35
const RD_KAFKA_RESP_ERR__BEGIN = -200;
46
const RD_KAFKA_RESP_ERR__BAD_MSG = -199;
57
const RD_KAFKA_RESP_ERR__BAD_COMPRESSION = -198;
@@ -43,6 +45,24 @@
4345
const RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = -160;
4446
const RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = -159;
4547
const RD_KAFKA_RESP_ERR__PARTIAL = -158;
48+
const RD_KAFKA_RESP_ERR__READ_ONLY = -157;
49+
const RD_KAFKA_RESP_ERR__NOENT = -156;
50+
const RD_KAFKA_RESP_ERR__UNDERFLOW = -155;
51+
const RD_KAFKA_RESP_ERR__INVALID_TYPE = -154;
52+
const RD_KAFKA_RESP_ERR__RETRY = -153;
53+
const RD_KAFKA_RESP_ERR__PURGE_QUEUE = -152;
54+
const RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = -151;
55+
const RD_KAFKA_RESP_ERR__FATAL = -150;
56+
const RD_KAFKA_RESP_ERR__INCONSISTENT = -149;
57+
const RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = -148;
58+
const RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = -147;
59+
const RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = -146;
60+
const RD_KAFKA_RESP_ERR__NOT_CONFIGURED = -145;
61+
const RD_KAFKA_RESP_ERR__FENCED = -144;
62+
const RD_KAFKA_RESP_ERR__APPLICATION = -143;
63+
const RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = -142;
64+
const RD_KAFKA_RESP_ERR__NOOP = -141;
65+
const RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = -140;
4666
const RD_KAFKA_RESP_ERR__END = -100;
4767
const RD_KAFKA_RESP_ERR_UNKNOWN = -1;
4868
const RD_KAFKA_RESP_ERR_NO_ERROR = 0;
@@ -59,9 +79,12 @@
5979
const RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11;
6080
const RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12;
6181
const RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13;
62-
const RD_KAFKA_RESP_ERR_GROUP_LOAD_IN_PROGRESS = 14;
63-
const RD_KAFKA_RESP_ERR_GROUP_COORDINATOR_NOT_AVAILABLE = 15;
64-
const RD_KAFKA_RESP_ERR_NOT_COORDINATOR_FOR_GROUP = 16;
82+
const RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14;
83+
const RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15;
84+
const RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16;
85+
const RD_KAFKA_RESP_ERR_GROUP_LOAD_IN_PROGRESS = 14; // alias, RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS
86+
const RD_KAFKA_RESP_ERR_GROUP_COORDINATOR_NOT_AVAILABLE = 15; // alias, RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE
87+
const RD_KAFKA_RESP_ERR_NOT_COORDINATOR_FOR_GROUP = 16; // alias, RD_KAFKA_RESP_ERR_NOT_COORDINATOR
6588
const RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17;
6689
const RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18;
6790
const RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19;
@@ -101,6 +124,48 @@
101124
const RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53;
102125
const RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54;
103126
const RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55;
127+
const RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56;
128+
const RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57;
129+
const RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58;
130+
const RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59;
131+
const RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60;
132+
const RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61;
133+
const RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62;
134+
const RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63;
135+
const RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64;
136+
const RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65;
137+
const RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66;
138+
const RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67;
139+
const RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68;
140+
const RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69;
141+
const RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70;
142+
const RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71;
143+
const RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72;
144+
const RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73;
145+
const RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74;
146+
const RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75;
147+
const RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76;
148+
const RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77;
149+
const RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78;
150+
const RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79;
151+
const RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80;
152+
const RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81;
153+
const RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82;
154+
const RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83;
155+
const RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84;
156+
const RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85;
157+
const RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86;
158+
const RD_KAFKA_RESP_ERR_INVALID_RECORD = 87;
159+
const RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88;
160+
const RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89;
161+
const RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90;
162+
const RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91;
163+
const RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92;
164+
const RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93;
165+
const RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94;
166+
const RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95;
167+
const RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96;
168+
const RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97;
104169
const RD_KAFKA_CONSUMER = 1;
105170
const RD_KAFKA_OFFSET_BEGINNING = -2;
106171
const RD_KAFKA_OFFSET_END = -1;
@@ -109,6 +174,7 @@
109174
const RD_KAFKA_PARTITION_UA = -1;
110175
const RD_KAFKA_PRODUCER = 0;
111176
const RD_KAFKA_VERSION = 525568;
177+
const RD_KAFKA_BUILD_VERSION = 17236223;
112178
const RD_KAFKA_CONF_UNKNOWN = -2;
113179
const RD_KAFKA_CONF_INVALID = -1;
114180
const RD_KAFKA_CONF_OK = 0;
@@ -117,10 +183,10 @@
117183
const RD_KAFKA_MSG_PARTITIONER_CONSISTENT_RANDOM = 4;
118184
const RD_KAFKA_MSG_PARTITIONER_MURMUR2 = 5;
119185
const RD_KAFKA_MSG_PARTITIONER_MURMUR2_RANDOM = 6;
120-
const RD_KAFKA_LOG_PRINT = 0;
121-
const RD_KAFKA_LOG_SYSLOG = 0;
122-
const RD_KAFKA_LOG_SYSLOG_PRINT = 0;
123-
const RD_KAFKA_PURGE_F_QUEUE = 0x1;
124-
const RD_KAFKA_PURGE_F_INFLIGHT = 0x2;
125-
const RD_KAFKA_PURGE_F_NON_BLOCKING = 0x4;
126-
const RD_KAFKA_MSG_F_BLOCK = 0x4;
186+
const RD_KAFKA_LOG_PRINT = 100;
187+
const RD_KAFKA_LOG_SYSLOG = 101;
188+
const RD_KAFKA_LOG_SYSLOG_PRINT = 102;
189+
const RD_KAFKA_PURGE_F_QUEUE = 1;
190+
const RD_KAFKA_PURGE_F_INFLIGHT = 2;
191+
const RD_KAFKA_PURGE_F_NON_BLOCKING = 4;
192+
const RD_KAFKA_MSG_F_BLOCK = 4;

tests/ConstantsTest.php

Lines changed: 92 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -4,123 +4,98 @@
44

55
class ConstantsTest extends TestCase
66
{
7-
public function testConstantsExist()
7+
/** @var array */
8+
private static $stubConstants;
9+
10+
/** @var array */
11+
private static $extensionConstants;
12+
13+
public static function setUpBeforeClass(): void
14+
{
15+
self::$extensionConstants = get_defined_constants(true)['rdkafka'];
16+
self::$stubConstants = self::loadConstantsFromStub();
17+
}
18+
19+
public function testConstantsExistInStubOnly()
20+
{
21+
// constants that present in stub but not in extension
22+
$stubConstantsNotInExtension = array_diff_key(
23+
self::$stubConstants,
24+
array_flip([
25+
/** @link https://github.com/edenhill/librdkafka/blob/master/src/rdkafka.h */
26+
'RD_KAFKA_RESP_ERR_GROUP_LOAD_IN_PROGRESS', // RD_KAFKA_RESP_ERR_GROUP_LOAD_IN_PROGRESS
27+
'RD_KAFKA_RESP_ERR_GROUP_COORDINATOR_NOT_AVAILABLE', // RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE
28+
'RD_KAFKA_RESP_ERR_NOT_COORDINATOR_FOR_GROUP', // RD_KAFKA_RESP_ERR_NOT_COORDINATOR
29+
'RD_KAFKA_OFFSET_INVALID', // not present in extension
30+
]),
31+
self::$extensionConstants
32+
);
33+
34+
$this->assertCount(
35+
0,
36+
$stubConstantsNotInExtension,
37+
sprintf(
38+
'In stub but not in extension: %s',
39+
var_export($stubConstantsNotInExtension, true)
40+
)
41+
);
42+
}
43+
44+
public function testConstantsExistInExtensionOnly()
45+
{
46+
// constants that present in extension but not in stub
47+
$extensionConstantsNotInStub = array_diff_key(
48+
self::$extensionConstants,
49+
self::$stubConstants
50+
);
51+
52+
$this->assertCount(
53+
0,
54+
$extensionConstantsNotInStub,
55+
sprintf(
56+
'In extension but not in stub: %s',
57+
var_export($extensionConstantsNotInStub, true)
58+
)
59+
);
60+
}
61+
62+
public function testConstantsExistButInvalidValue()
63+
{
64+
$extensionConstants = self::$extensionConstants;
65+
$stubConstants = self::$stubConstants;
66+
67+
// unset because depends of extension version
68+
unset($extensionConstants['RD_KAFKA_VERSION']);
69+
unset($extensionConstants['RD_KAFKA_BUILD_VERSION']);
70+
unset($stubConstants['RD_KAFKA_VERSION']);
71+
unset($stubConstants['RD_KAFKA_BUILD_VERSION']);
72+
73+
// constants in both places but has different values
74+
$this->assertEquals(
75+
array_intersect_key(
76+
$extensionConstants,
77+
$stubConstants
78+
),
79+
array_intersect_key(
80+
$stubConstants,
81+
$extensionConstants
82+
)
83+
);
84+
}
85+
86+
private static function loadConstantsFromStub(): array
887
{
9-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__BEGIN'));
10-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__BAD_MSG'));
11-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__BAD_COMPRESSION'));
12-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__DESTROY'));
13-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__FAIL'));
14-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__TRANSPORT'));
15-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE'));
16-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__RESOLVE'));
17-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__MSG_TIMED_OUT'));
18-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__PARTITION_EOF'));
19-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION'));
20-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__FS'));
21-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC'));
22-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN'));
23-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__INVALID_ARG'));
24-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__TIMED_OUT'));
25-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__QUEUE_FULL'));
26-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__ISR_INSUFF'));
27-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__NODE_UPDATE'));
28-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__SSL'));
29-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__WAIT_COORD'));
30-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__UNKNOWN_GROUP'));
31-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__IN_PROGRESS'));
32-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS'));
33-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION'));
34-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS'));
35-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS'));
36-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__CONFLICT'));
37-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__STATE'));
38-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL'));
39-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED'));
40-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__AUTHENTICATION'));
41-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__NO_OFFSET'));
42-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__OUTDATED'));
43-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE'));
44-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE'));
45-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__WAIT_CACHE'));
46-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__INTR'));
47-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__KEY_SERIALIZATION'));
48-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION'));
49-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION'));
50-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION'));
51-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__PARTIAL'));
52-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR__END'));
53-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_UNKNOWN'));
54-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_NO_ERROR'));
55-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE'));
56-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_MSG'));
57-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART'));
58-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE'));
59-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE'));
60-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION'));
61-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT'));
62-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE'));
63-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE'));
64-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE'));
65-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH'));
66-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE'));
67-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION'));
68-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS'));
69-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE'));
70-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_NOT_COORDINATOR'));
71-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION'));
72-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE'));
73-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS'));
74-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND'));
75-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS'));
76-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION'));
77-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL'));
78-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_GROUP_ID'));
79-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID'));
80-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT'));
81-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS'));
82-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE'));
83-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED'));
84-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED'));
85-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED'));
86-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP'));
87-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM'));
88-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE'));
89-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION'));
90-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS'));
91-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_PARTITIONS'));
92-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR'));
93-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT'));
94-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_CONFIG'));
95-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_NOT_CONTROLLER'));
96-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_REQUEST'));
97-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT'));
98-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_POLICY_VIOLATION'));
99-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER'));
100-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER'));
101-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH'));
102-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_TXN_STATE'));
103-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING'));
104-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT'));
105-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS'));
106-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED'));
107-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED'));
108-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_SECURITY_DISABLED'));
109-
$this->assertTrue(defined('RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED'));
110-
$this->assertTrue(defined('RD_KAFKA_CONSUMER'));
111-
$this->assertTrue(defined('RD_KAFKA_OFFSET_BEGINNING'));
112-
$this->assertTrue(defined('RD_KAFKA_OFFSET_END'));
113-
$this->assertTrue(defined('RD_KAFKA_OFFSET_STORED'));
114-
$this->assertTrue(defined('RD_KAFKA_PARTITION_UA'));
115-
$this->assertTrue(defined('RD_KAFKA_PRODUCER'));
116-
$this->assertTrue(defined('RD_KAFKA_VERSION'));
117-
$this->assertTrue(defined('RD_KAFKA_CONF_UNKNOWN'));
118-
$this->assertTrue(defined('RD_KAFKA_CONF_INVALID'));
119-
$this->assertTrue(defined('RD_KAFKA_CONF_OK'));
120-
$this->assertTrue(defined('RD_KAFKA_MSG_PARTITIONER_RANDOM'));
121-
$this->assertTrue(defined('RD_KAFKA_MSG_PARTITIONER_CONSISTENT'));
122-
$this->assertTrue(defined('RD_KAFKA_LOG_PRINT'));
123-
$this->assertTrue(defined('RD_KAFKA_LOG_SYSLOG'));
124-
$this->assertTrue(defined('RD_KAFKA_LOG_SYSLOG_PRINT'));
88+
$stubConstants = [];
89+
$constantsStubFile = fopen(__DIR__ . '/../stubs/constants.php', 'r+');
90+
while (!feof($constantsStubFile)) {
91+
$line = trim(fgets($constantsStubFile));
92+
if (!preg_match('/const ([0-9A-Z_]+) = (.+);/', $line, $matches)) {
93+
continue;
94+
}
95+
96+
$stubConstants[$matches[1]] = (int) $matches[2];
97+
}
98+
99+
return $stubConstants;
125100
}
126101
}

0 commit comments

Comments
 (0)