kafka-ui/kafka-ui-react-app/src/lib/fixtures/topics.ts
Oleg Shur 7765a268af
Topic statistics (#2413)
* Topic statistics

* Typo

* Code smell

* Specs

* Specs

* Use timestamp helper

* Improve coverage

* styling
2022-08-09 16:13:03 +03:00

285 lines
6.2 KiB
TypeScript

import {
ConfigSource,
ConsumerGroup,
ConsumerGroupState,
Topic,
TopicConfig,
MessageSchemaSourceEnum,
TopicAnalysis,
} from 'generated-sources';
export const internalTopicPayload = {
name: '__internal.topic',
internal: true,
partitionCount: 1,
replicationFactor: 1,
replicas: 1,
inSyncReplicas: 1,
segmentSize: 0,
segmentCount: 1,
underReplicatedPartitions: 0,
partitions: [
{
partition: 0,
leader: 1,
replicas: [{ broker: 1, leader: false, inSync: true }],
offsetMax: 0,
offsetMin: 0,
},
],
};
export const externalTopicPayload = {
name: 'external.topic',
internal: false,
partitionCount: 1,
replicationFactor: 1,
replicas: 1,
inSyncReplicas: 1,
segmentSize: 1263,
segmentCount: 1,
underReplicatedPartitions: 0,
partitions: [
{
partition: 0,
leader: 1,
replicas: [{ broker: 1, leader: false, inSync: true }],
offsetMax: 0,
offsetMin: 0,
},
],
};
export const topicsPayload: Topic[] = [
internalTopicPayload,
externalTopicPayload,
];
export const topicConsumerGroups: ConsumerGroup[] = [
{
groupId: 'amazon.msk.canary.group.broker-7',
topics: 0,
members: 0,
simple: false,
partitionAssignor: '',
state: ConsumerGroupState.UNKNOWN,
coordinator: { id: 1 },
messagesBehind: 9,
},
{
groupId: 'amazon.msk.canary.group.broker-4',
topics: 0,
members: 0,
simple: false,
partitionAssignor: '',
state: ConsumerGroupState.COMPLETING_REBALANCE,
coordinator: { id: 1 },
messagesBehind: 9,
},
];
export const topicConfigPayload: TopicConfig[] = [
{
name: 'compression.type',
value: 'producer',
defaultValue: 'producer',
source: ConfigSource.DYNAMIC_TOPIC_CONFIG,
isSensitive: false,
isReadOnly: false,
synonyms: [
{
name: 'compression.type',
value: 'producer',
source: ConfigSource.DYNAMIC_TOPIC_CONFIG,
},
{
name: 'compression.type',
value: 'producer',
source: ConfigSource.DEFAULT_CONFIG,
},
],
},
{
name: 'confluent.value.schema.validation',
value: 'false',
source: ConfigSource.DEFAULT_CONFIG,
isSensitive: false,
isReadOnly: false,
synonyms: [],
},
{
name: 'leader.replication.throttled.replicas',
value: '',
defaultValue: '',
source: ConfigSource.DEFAULT_CONFIG,
isSensitive: false,
isReadOnly: false,
synonyms: [],
},
{
name: 'confluent.key.subject.name.strategy',
value: 'io.confluent.kafka.serializers.subject.TopicNameStrategy',
source: ConfigSource.DEFAULT_CONFIG,
isSensitive: false,
isReadOnly: false,
synonyms: [],
},
{
name: 'message.downconversion.enable',
value: 'true',
defaultValue: 'true',
source: ConfigSource.DEFAULT_CONFIG,
isSensitive: false,
isReadOnly: false,
synonyms: [
{
name: 'log.message.downconversion.enable',
value: 'true',
source: ConfigSource.DEFAULT_CONFIG,
},
],
},
{
name: 'min.insync.replicas',
value: '1',
defaultValue: '1',
source: ConfigSource.DYNAMIC_TOPIC_CONFIG,
isSensitive: false,
isReadOnly: false,
synonyms: [
{
name: 'min.insync.replicas',
value: '1',
source: ConfigSource.DYNAMIC_TOPIC_CONFIG,
},
{
name: 'min.insync.replicas',
value: '1',
source: ConfigSource.DEFAULT_CONFIG,
},
],
},
];
export const topicMessageSchema = {
key: {
name: 'key',
source: MessageSchemaSourceEnum.SCHEMA_REGISTRY,
schema: `{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "http://example.com/myURI.schema.json",
"title": "TestRecord",
"type": "object",
"additionalProperties": false,
"properties": {
"f1": {
"type": "integer"
},
"f2": {
"type": "string"
},
"schema": {
"type": "string"
}
}
}
`,
},
value: {
name: 'value',
source: MessageSchemaSourceEnum.SCHEMA_REGISTRY,
schema: `{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "http://example.com/myURI1.schema.json",
"title": "TestRecord",
"type": "object",
"additionalProperties": false,
"properties": {
"f1": {
"type": "integer"
},
"f2": {
"type": "string"
},
"schema": {
"type": "string"
}
}
}
`,
},
};
const topicStatsSize = {
sum: 0,
avg: 0,
prctl50: 0,
prctl75: 0,
prctl95: 0,
prctl99: 0,
prctl999: 0,
};
export const topicStatsPayload: TopicAnalysis = {
progress: {
startedAt: 1659984559167,
completenessPercent: 43,
msgsScanned: 18077002,
bytesScanned: 6750901718,
},
result: {
startedAt: 1659984559095,
finishedAt: 1659984617816,
totalStats: {
totalMsgs: 18194715,
minOffset: 98869591,
maxOffset: 100576010,
minTimestamp: 1659719759485,
maxTimestamp: 1659984603419,
nullKeys: 18194715,
nullValues: 0,
approxUniqKeys: 0,
approxUniqValues: 17817283,
keySize: topicStatsSize,
valueSize: topicStatsSize,
hourlyMsgCounts: [
{ hourStart: 1659718800000, count: 16157 },
{ hourStart: 1659722400000, count: 225790 },
],
},
partitionStats: [
{
partition: 0,
totalMsgs: 1515285,
minOffset: 99060726,
maxOffset: 100576010,
minTimestamp: 1659722684090,
maxTimestamp: 1659984603419,
nullKeys: 1515285,
nullValues: 0,
approxUniqKeys: 0,
approxUniqValues: 1515285,
keySize: topicStatsSize,
valueSize: topicStatsSize,
hourlyMsgCounts: [
{ hourStart: 1659722400000, count: 18040 },
{ hourStart: 1659726000000, count: 20070 },
],
},
{
partition: 1,
totalMsgs: 1534422,
minOffset: 98897827,
maxOffset: 100432248,
minTimestamp: 1659722803993,
maxTimestamp: 1659984603416,
nullKeys: 1534422,
nullValues: 0,
approxUniqKeys: 0,
approxUniqValues: 1516431,
keySize: topicStatsSize,
valueSize: topicStatsSize,
hourlyMsgCounts: [{ hourStart: 1659722400000, count: 19058 }],
},
],
},
};