|
73 | 73 | import java.util.concurrent.atomic.AtomicReference;
|
74 | 74 | import java.util.stream.Collectors;
|
75 | 75 | import lombok.Cleanup;
|
| 76 | +import lombok.Data; |
76 | 77 | import lombok.extern.slf4j.Slf4j;
|
77 | 78 | import org.apache.commons.lang3.reflect.FieldUtils;
|
78 | 79 | import org.apache.commons.lang3.tuple.Pair;
|
|
94 | 95 | import org.apache.pulsar.broker.loadbalance.extensions.models.UnloadCounter;
|
95 | 96 | import org.apache.pulsar.broker.loadbalance.extensions.reporter.BrokerLoadDataReporter;
|
96 | 97 | import org.apache.pulsar.broker.loadbalance.extensions.scheduler.TransferShedder;
|
| 98 | +import org.apache.pulsar.broker.loadbalance.extensions.store.LoadDataStoreFactory; |
97 | 99 | import org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl;
|
98 | 100 | import org.apache.pulsar.broker.lookup.LookupResult;
|
99 | 101 | import org.apache.pulsar.broker.namespace.LookupOptions;
|
100 | 102 | import org.apache.pulsar.broker.namespace.NamespaceBundleOwnershipListener;
|
101 | 103 | import org.apache.pulsar.broker.namespace.NamespaceEphemeralData;
|
102 | 104 | import org.apache.pulsar.broker.namespace.NamespaceService;
|
103 | 105 | import org.apache.pulsar.broker.service.BrokerServiceException;
|
| 106 | +import org.apache.pulsar.broker.service.nonpersistent.NonPersistentSystemTopic; |
104 | 107 | import org.apache.pulsar.client.admin.PulsarAdminException;
|
105 | 108 | import org.apache.pulsar.client.api.Consumer;
|
106 | 109 | import org.apache.pulsar.client.api.Producer;
|
|
114 | 117 | import org.apache.pulsar.common.policies.data.BrokerAssignment;
|
115 | 118 | import org.apache.pulsar.common.policies.data.BundlesData;
|
116 | 119 | import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus;
|
| 120 | +import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; |
117 | 121 | import org.apache.pulsar.common.stats.Metrics;
|
118 | 122 | import org.apache.pulsar.common.util.FutureUtil;
|
119 | 123 | import org.apache.pulsar.policies.data.loadbalancer.NamespaceBundleStats;
|
120 | 124 | import org.apache.pulsar.policies.data.loadbalancer.ResourceUsage;
|
121 | 125 | import org.apache.pulsar.policies.data.loadbalancer.SystemResourceUsage;
|
122 | 126 | import org.awaitility.Awaitility;
|
123 | 127 | import org.mockito.MockedStatic;
|
| 128 | +import org.testng.Assert; |
124 | 129 | import org.testng.AssertJUnit;
|
125 | 130 | import org.testng.annotations.Test;
|
126 | 131 |
|
@@ -1476,6 +1481,43 @@ public void compactionScheduleTest() {
|
1476 | 1481 | });
|
1477 | 1482 | }
|
1478 | 1483 |
|
| 1484 | + @Test |
| 1485 | + public void testSystemNonPersistentTopicSchemaCompatibility() throws Exception { |
| 1486 | + String topicName = ExtensibleLoadManagerImpl.BROKER_LOAD_DATA_STORE_TOPIC; |
| 1487 | + NonPersistentSystemTopic topic = new NonPersistentSystemTopic(topicName, pulsar.getBrokerService()); |
| 1488 | + Assert.assertEquals(SchemaCompatibilityStrategy.ALWAYS_COMPATIBLE, topic.getSchemaCompatibilityStrategy()); |
| 1489 | + |
| 1490 | + var brokerLoadDataStore = LoadDataStoreFactory.create(pulsar, topicName, BrokerLoadDataV1.class); |
| 1491 | + brokerLoadDataStore.init(); |
| 1492 | + brokerLoadDataStore.pushAsync("key", new BrokerLoadDataV1()).get(); |
| 1493 | + Awaitility.await().until(() -> { |
| 1494 | + var data = brokerLoadDataStore.get("key"); |
| 1495 | + return data.isPresent(); |
| 1496 | + }); |
| 1497 | + brokerLoadDataStore.pushAsync("key", null).get(); |
| 1498 | + brokerLoadDataStore.close(); |
| 1499 | + } |
| 1500 | + |
| 1501 | + @Data |
| 1502 | + private static class BrokerLoadDataV1 { |
| 1503 | + private ResourceUsage cpu; |
| 1504 | + private ResourceUsage memory; |
| 1505 | + private ResourceUsage directMemory; |
| 1506 | + private ResourceUsage bandwidthIn; |
| 1507 | + private ResourceUsage bandwidthOut; |
| 1508 | + private double msgThroughputIn; |
| 1509 | + private double msgThroughputOut; |
| 1510 | + private double msgRateIn; |
| 1511 | + private double msgRateOut; |
| 1512 | + private int bundleCount; |
| 1513 | + private int topics; |
| 1514 | + private double maxResourceUsage; |
| 1515 | + private double weightedMaxEMA; |
| 1516 | + private double msgThroughputEMA; |
| 1517 | + private long updatedAt; |
| 1518 | + private long reportedAt; |
| 1519 | + } |
| 1520 | + |
1479 | 1521 | @Test(timeOut = 10 * 1000)
|
1480 | 1522 | public void unloadTimeoutCheckTest()
|
1481 | 1523 | throws Exception {
|
|
0 commit comments