* chore: updated logic and use centralized function in the module
* chore: filter metric groups
* chore: filter metric groups
* chore: formula correction
* chore: added step flooring note
* chore: comment correction
* chore: comment correction
* chore: removed function
* chore: renamed variables
* chore: added happy test
* chore: added test 2 for accuracy and test 3 for missing metrics check
* chore: added filter test 4
* chore: added 5th test for filterByStatus
* chore: added group by tests
* chore: pagination test added
* chore: added validation tests
* chore: added auth test
* chore: added all tests
* chore: fix for surfacing meta for pods custom group by
* chore: added nodes integration test suite
* chore: namespaces integration tests
* ci: register inframonitoring suite + ruff format 01_hosts
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* chore: added integration tests for clusters
* chore: formatting changed
* chore: formatting changed
* chore: formatting changed
* chore: added volumes integration tests
* chore: added deployments
* chore: added tests
* chore: added order by host.name test
* refactor(infra-monitoring): address review comments on hosts integration tests
- inline _post helper at call sites
- combine filter operator tests into parametrized test_hosts_filter
- combine bad attr/grammar tests into parametrized test_hosts_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_hosts_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align pods integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_pods_filter
- combine bad attr/grammar tests into parametrized test_pods_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_pods_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align nodes integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_nodes_filter
- combine bad attr/grammar tests into parametrized test_nodes_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_nodes_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align namespaces integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_namespaces_filter
- combine bad attr/grammar tests into parametrized test_namespaces_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_namespaces_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align clusters integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_clusters_filter
- combine bad attr/grammar tests into parametrized test_clusters_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_clusters_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align volumes integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_volumes_filter
- combine bad attr/grammar tests into parametrized test_volumes_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_volumes_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align deployments integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_deployments_filter
- combine bad attr/grammar tests into parametrized test_deployments_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_deployments_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align statefulsets integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_statefulsets_filter
- combine bad attr/grammar tests into parametrized test_statefulsets_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_statefulsets_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts groupby tests into parametrized test
- merge test_hosts_groupby_hostname + test_hosts_groupby_os_type into
test_hosts_groupby parametrized on (dataset, group key, expected counts/values)
- preserves all assertions incl hostName populated-vs-empty branch coverage
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts orderby tests into parametrized test
- merge total_invariant_across_orderby + orderby_correctness + orderby_by_host_name
into test_hosts_orderby parametrized on (column, record_field) x direction
- each case asserts both the total/len invariant and sortedness; sortedness now
covered for all metric columns, not just cpu
- single dataset (hosts_orderby.jsonl) + CONTAINS 'order-' guard on all cases
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts pagination tests
- fold offset-beyond-total case into the test_hosts_pagination page walk
(offset K+5 expects 0 records via max(0, min(limit, K-offset)); total
invariant covers the beyond-total page's total == K)
- single seed instead of two
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): merge hosts happy_path into test_hosts_accuracy
- happy_path and value_accuracy datasets were structurally identical
(same 4 metrics, same sample counts, 2 hosts); one test now asserts
shape/contract + exact metric values in a single seed/request
- drop unused hosts_happy_path.jsonl
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine pods integration tests logically
- merge happy_path into test_pods_accuracy (datasets structurally identical);
drop unused pods_happy_path.jsonl
- merge groupby namespace/deployment into parametrized test_pods_groupby
- merge orderby invariant + correctness + by-pod-name into test_pods_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_pods_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine nodes integration tests logically
- merge happy_path into test_nodes_accuracy; drop unused nodes_happy_path.jsonl
- merge orderby invariant + correctness + by-node-name into test_nodes_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_nodes_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine namespaces integration tests logically
- merge happy_path into test_namespaces_accuracy; drop unused namespaces_happy_path.jsonl
- merge orderby invariant + correctness + by-namespace-name into test_namespaces_orderby
- fold offset-beyond-total into test_namespaces_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine clusters integration tests logically
- merge happy_path into test_clusters_accuracy; drop unused clusters_happy_path.jsonl
- merge orderby invariant + correctness + by-cluster-name into test_clusters_orderby
- fold offset-beyond-total into test_clusters_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine volumes integration tests logically
- merge happy_path into test_volumes_accuracy; drop unused volumes_happy_path.jsonl
- merge orderby invariant + correctness + by-pvc-name into test_volumes_orderby
- fold offset-beyond-total into test_volumes_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine deployments integration tests logically
- merge happy_path into test_deployments_accuracy; drop unused deployments_happy_path.jsonl
- merge orderby invariant + correctness + by-deployment-name into test_deployments_orderby
- fold offset-beyond-total into test_deployments_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine statefulsets integration tests logically
- merge happy_path into test_statefulsets_accuracy; drop unused statefulsets_happy_path.jsonl
- merge orderby invariant + correctness + by-statefulset-name into test_statefulsets_orderby
- fold offset-beyond-total into test_statefulsets_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in hosts filter tests
- regenerate hosts_filter_dataset.jsonl so every host mirrors the acc-h1
sample pattern from hosts_value_accuracy.jsonl (CI-proven expected values)
- test_hosts_filter now asserts cpu/memory/wait/load15/diskUsage per filtered
record against FILTER_DATASET_EXPECTED (1e-9), proving filters don't
distort aggregation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): scope filter expected values inside test_hosts_filter
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in pods filter tests
- regenerate pods_filter_dataset.jsonl so every pod mirrors the acc-p1
sample pattern from pods_value_accuracy.jsonl (CI-proven expected values)
- test_pods_filter now asserts the 6 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in nodes filter tests
- regenerate nodes_filter_dataset.jsonl so every node mirrors the acc-n1
sample pattern from nodes_value_accuracy.jsonl (CI-proven expected values)
- test_nodes_filter now asserts the 4 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in namespaces filter tests
- regenerate namespaces_filter_dataset.jsonl so every namespace mirrors the
acc-ns-1 sample pattern (2 pods) from namespaces_value_accuracy.jsonl
- test_namespaces_filter now asserts namespaceCPU/namespaceMemory per record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in clusters filter tests
- regenerate clusters_filter_dataset.jsonl so every cluster mirrors the
acc-cluster-1 sample pattern (2 nodes) from clusters_value_accuracy.jsonl
- test_clusters_filter now asserts the 4 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in volumes filter tests
- regenerate volumes_filter_dataset.jsonl so every PVC mirrors the acc-pvc-1
sample pattern from volumes_value_accuracy.jsonl (CI-proven expected values)
- test_volumes_filter now asserts all 6 volume fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in deployments filter tests
- regenerate deployments_filter_dataset.jsonl so every deployment mirrors the
acc-dep-1 sample pattern (2 pods) from deployments_value_accuracy.jsonl
- test_deployments_filter now asserts the 6 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in statefulsets filter tests
- regenerate statefulsets_filter_dataset.jsonl so every statefulset mirrors
the acc-ss-1 sample pattern (2 pods) from statefulsets_value_accuracy.jsonl
- test_statefulsets_filter now asserts the 6 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align nodes groupby + pod-phase tests with structure
- merge pod_phase_counts_list_mode + _no_pods_on_node into parametrized
test_nodes_pod_phase_counts ((dataset, node, filter, expected) cases)
- rename groupby_cluster -> test_nodes_groupby, parametrize over
k8s.node.name + k8s.cluster.name; adds the node-name-in-groupBy branch
(nodeName populated, condition derived) that hosts/pods both cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align namespaces groupby with structure
- rename groupby_cluster -> test_namespaces_groupby, parametrize over
k8s.namespace.name + k8s.cluster.name; adds the namespace-name-in-groupBy
branch (namespaceName populated) that hosts/pods/nodes all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align clusters groupby with structure
- rename groupby_cloud_provider -> test_clusters_groupby, parametrize over
k8s.cluster.name + cloud.provider; adds the cluster-name-in-groupBy branch
(clusterName populated) that hosts/pods/nodes/namespaces all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align volumes groupby with structure
- rename groupby_namespace -> test_volumes_groupby, parametrize over
k8s.persistentvolumeclaim.name + k8s.namespace.name; adds the
pvc-name-in-groupBy branch (persistentVolumeClaimName populated) that the
other endpoints all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align deployments groupby with structure
- rename groupby_namespace -> test_deployments_groupby, parametrize over
k8s.deployment.name + k8s.namespace.name; adds the deployment-name-in-groupBy
branch (deploymentName populated) that the other endpoints all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align statefulsets groupby with structure
- rename groupby_namespace -> test_statefulsets_groupby, parametrize over
k8s.statefulset.name + k8s.namespace.name; adds the statefulset-name-in-groupBy
branch (statefulSetName populated) that the other endpoints all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* chore: updated logic and use centralized function in the module
* chore: filter metric groups
* chore: filter metric groups
* chore: formula correction
* chore: added step flooring note
* chore: comment correction
* chore: comment correction
* chore: removed function
* chore: renamed variables
* chore: added happy test
* chore: added test 2 for accuracy and test 3 for missing metrics check
* chore: added filter test 4
* chore: added 5th test for filterByStatus
* chore: added group by tests
* chore: pagination test added
* chore: added validation tests
* chore: added auth test
* chore: added all tests
* chore: fix for surfacing meta for pods custom group by
* chore: added nodes integration test suite
* chore: namespaces integration tests
* ci: register inframonitoring suite + ruff format 01_hosts
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* chore: added integration tests for clusters
* chore: formatting changed
* chore: formatting changed
* chore: formatting changed
* chore: added volumes integration tests
* chore: added deployments
* chore: added order by host.name test
* refactor(infra-monitoring): address review comments on hosts integration tests
- inline _post helper at call sites
- combine filter operator tests into parametrized test_hosts_filter
- combine bad attr/grammar tests into parametrized test_hosts_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_hosts_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align pods integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_pods_filter
- combine bad attr/grammar tests into parametrized test_pods_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_pods_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align nodes integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_nodes_filter
- combine bad attr/grammar tests into parametrized test_nodes_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_nodes_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align namespaces integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_namespaces_filter
- combine bad attr/grammar tests into parametrized test_namespaces_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_namespaces_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align clusters integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_clusters_filter
- combine bad attr/grammar tests into parametrized test_clusters_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_clusters_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align volumes integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_volumes_filter
- combine bad attr/grammar tests into parametrized test_volumes_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_volumes_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align deployments integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_deployments_filter
- combine bad attr/grammar tests into parametrized test_deployments_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_deployments_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts groupby tests into parametrized test
- merge test_hosts_groupby_hostname + test_hosts_groupby_os_type into
test_hosts_groupby parametrized on (dataset, group key, expected counts/values)
- preserves all assertions incl hostName populated-vs-empty branch coverage
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts orderby tests into parametrized test
- merge total_invariant_across_orderby + orderby_correctness + orderby_by_host_name
into test_hosts_orderby parametrized on (column, record_field) x direction
- each case asserts both the total/len invariant and sortedness; sortedness now
covered for all metric columns, not just cpu
- single dataset (hosts_orderby.jsonl) + CONTAINS 'order-' guard on all cases
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts pagination tests
- fold offset-beyond-total case into the test_hosts_pagination page walk
(offset K+5 expects 0 records via max(0, min(limit, K-offset)); total
invariant covers the beyond-total page's total == K)
- single seed instead of two
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): merge hosts happy_path into test_hosts_accuracy
- happy_path and value_accuracy datasets were structurally identical
(same 4 metrics, same sample counts, 2 hosts); one test now asserts
shape/contract + exact metric values in a single seed/request
- drop unused hosts_happy_path.jsonl
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine pods integration tests logically
- merge happy_path into test_pods_accuracy (datasets structurally identical);
drop unused pods_happy_path.jsonl
- merge groupby namespace/deployment into parametrized test_pods_groupby
- merge orderby invariant + correctness + by-pod-name into test_pods_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_pods_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine nodes integration tests logically
- merge happy_path into test_nodes_accuracy; drop unused nodes_happy_path.jsonl
- merge orderby invariant + correctness + by-node-name into test_nodes_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_nodes_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine namespaces integration tests logically
- merge happy_path into test_namespaces_accuracy; drop unused namespaces_happy_path.jsonl
- merge orderby invariant + correctness + by-namespace-name into test_namespaces_orderby
- fold offset-beyond-total into test_namespaces_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine clusters integration tests logically
- merge happy_path into test_clusters_accuracy; drop unused clusters_happy_path.jsonl
- merge orderby invariant + correctness + by-cluster-name into test_clusters_orderby
- fold offset-beyond-total into test_clusters_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine volumes integration tests logically
- merge happy_path into test_volumes_accuracy; drop unused volumes_happy_path.jsonl
- merge orderby invariant + correctness + by-pvc-name into test_volumes_orderby
- fold offset-beyond-total into test_volumes_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine deployments integration tests logically
- merge happy_path into test_deployments_accuracy; drop unused deployments_happy_path.jsonl
- merge orderby invariant + correctness + by-deployment-name into test_deployments_orderby
- fold offset-beyond-total into test_deployments_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in hosts filter tests
- regenerate hosts_filter_dataset.jsonl so every host mirrors the acc-h1
sample pattern from hosts_value_accuracy.jsonl (CI-proven expected values)
- test_hosts_filter now asserts cpu/memory/wait/load15/diskUsage per filtered
record against FILTER_DATASET_EXPECTED (1e-9), proving filters don't
distort aggregation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): scope filter expected values inside test_hosts_filter
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in pods filter tests
- regenerate pods_filter_dataset.jsonl so every pod mirrors the acc-p1
sample pattern from pods_value_accuracy.jsonl (CI-proven expected values)
- test_pods_filter now asserts the 6 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in nodes filter tests
- regenerate nodes_filter_dataset.jsonl so every node mirrors the acc-n1
sample pattern from nodes_value_accuracy.jsonl (CI-proven expected values)
- test_nodes_filter now asserts the 4 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in namespaces filter tests
- regenerate namespaces_filter_dataset.jsonl so every namespace mirrors the
acc-ns-1 sample pattern (2 pods) from namespaces_value_accuracy.jsonl
- test_namespaces_filter now asserts namespaceCPU/namespaceMemory per record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in clusters filter tests
- regenerate clusters_filter_dataset.jsonl so every cluster mirrors the
acc-cluster-1 sample pattern (2 nodes) from clusters_value_accuracy.jsonl
- test_clusters_filter now asserts the 4 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in volumes filter tests
- regenerate volumes_filter_dataset.jsonl so every PVC mirrors the acc-pvc-1
sample pattern from volumes_value_accuracy.jsonl (CI-proven expected values)
- test_volumes_filter now asserts all 6 volume fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in deployments filter tests
- regenerate deployments_filter_dataset.jsonl so every deployment mirrors the
acc-dep-1 sample pattern (2 pods) from deployments_value_accuracy.jsonl
- test_deployments_filter now asserts the 6 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align nodes groupby + pod-phase tests with structure
- merge pod_phase_counts_list_mode + _no_pods_on_node into parametrized
test_nodes_pod_phase_counts ((dataset, node, filter, expected) cases)
- rename groupby_cluster -> test_nodes_groupby, parametrize over
k8s.node.name + k8s.cluster.name; adds the node-name-in-groupBy branch
(nodeName populated, condition derived) that hosts/pods both cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align namespaces groupby with structure
- rename groupby_cluster -> test_namespaces_groupby, parametrize over
k8s.namespace.name + k8s.cluster.name; adds the namespace-name-in-groupBy
branch (namespaceName populated) that hosts/pods/nodes all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align clusters groupby with structure
- rename groupby_cloud_provider -> test_clusters_groupby, parametrize over
k8s.cluster.name + cloud.provider; adds the cluster-name-in-groupBy branch
(clusterName populated) that hosts/pods/nodes/namespaces all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align volumes groupby with structure
- rename groupby_namespace -> test_volumes_groupby, parametrize over
k8s.persistentvolumeclaim.name + k8s.namespace.name; adds the
pvc-name-in-groupBy branch (persistentVolumeClaimName populated) that the
other endpoints all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align deployments groupby with structure
- rename groupby_namespace -> test_deployments_groupby, parametrize over
k8s.deployment.name + k8s.namespace.name; adds the deployment-name-in-groupBy
branch (deploymentName populated) that the other endpoints all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* chore: updated logic and use centralized function in the module
* chore: filter metric groups
* chore: filter metric groups
* chore: formula correction
* chore: added step flooring note
* chore: comment correction
* chore: comment correction
* chore: removed function
* chore: renamed variables
* chore: added happy test
* chore: added test 2 for accuracy and test 3 for missing metrics check
* chore: added filter test 4
* chore: added 5th test for filterByStatus
* chore: added group by tests
* chore: pagination test added
* chore: added validation tests
* chore: added auth test
* chore: added all tests
* chore: fix for surfacing meta for pods custom group by
* chore: added nodes integration test suite
* chore: namespaces integration tests
* ci: register inframonitoring suite + ruff format 01_hosts
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* chore: added integration tests for clusters
* chore: formatting changed
* chore: formatting changed
* chore: formatting changed
* chore: added volumes integration tests
* chore: added order by host.name test
* refactor(infra-monitoring): address review comments on hosts integration tests
- inline _post helper at call sites
- combine filter operator tests into parametrized test_hosts_filter
- combine bad attr/grammar tests into parametrized test_hosts_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_hosts_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align pods integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_pods_filter
- combine bad attr/grammar tests into parametrized test_pods_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_pods_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align nodes integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_nodes_filter
- combine bad attr/grammar tests into parametrized test_nodes_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_nodes_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align namespaces integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_namespaces_filter
- combine bad attr/grammar tests into parametrized test_namespaces_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_namespaces_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align clusters integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_clusters_filter
- combine bad attr/grammar tests into parametrized test_clusters_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_clusters_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align volumes integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_volumes_filter
- combine bad attr/grammar tests into parametrized test_volumes_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_volumes_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts groupby tests into parametrized test
- merge test_hosts_groupby_hostname + test_hosts_groupby_os_type into
test_hosts_groupby parametrized on (dataset, group key, expected counts/values)
- preserves all assertions incl hostName populated-vs-empty branch coverage
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts orderby tests into parametrized test
- merge total_invariant_across_orderby + orderby_correctness + orderby_by_host_name
into test_hosts_orderby parametrized on (column, record_field) x direction
- each case asserts both the total/len invariant and sortedness; sortedness now
covered for all metric columns, not just cpu
- single dataset (hosts_orderby.jsonl) + CONTAINS 'order-' guard on all cases
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts pagination tests
- fold offset-beyond-total case into the test_hosts_pagination page walk
(offset K+5 expects 0 records via max(0, min(limit, K-offset)); total
invariant covers the beyond-total page's total == K)
- single seed instead of two
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): merge hosts happy_path into test_hosts_accuracy
- happy_path and value_accuracy datasets were structurally identical
(same 4 metrics, same sample counts, 2 hosts); one test now asserts
shape/contract + exact metric values in a single seed/request
- drop unused hosts_happy_path.jsonl
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine pods integration tests logically
- merge happy_path into test_pods_accuracy (datasets structurally identical);
drop unused pods_happy_path.jsonl
- merge groupby namespace/deployment into parametrized test_pods_groupby
- merge orderby invariant + correctness + by-pod-name into test_pods_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_pods_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine nodes integration tests logically
- merge happy_path into test_nodes_accuracy; drop unused nodes_happy_path.jsonl
- merge orderby invariant + correctness + by-node-name into test_nodes_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_nodes_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine namespaces integration tests logically
- merge happy_path into test_namespaces_accuracy; drop unused namespaces_happy_path.jsonl
- merge orderby invariant + correctness + by-namespace-name into test_namespaces_orderby
- fold offset-beyond-total into test_namespaces_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine clusters integration tests logically
- merge happy_path into test_clusters_accuracy; drop unused clusters_happy_path.jsonl
- merge orderby invariant + correctness + by-cluster-name into test_clusters_orderby
- fold offset-beyond-total into test_clusters_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine volumes integration tests logically
- merge happy_path into test_volumes_accuracy; drop unused volumes_happy_path.jsonl
- merge orderby invariant + correctness + by-pvc-name into test_volumes_orderby
- fold offset-beyond-total into test_volumes_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in hosts filter tests
- regenerate hosts_filter_dataset.jsonl so every host mirrors the acc-h1
sample pattern from hosts_value_accuracy.jsonl (CI-proven expected values)
- test_hosts_filter now asserts cpu/memory/wait/load15/diskUsage per filtered
record against FILTER_DATASET_EXPECTED (1e-9), proving filters don't
distort aggregation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): scope filter expected values inside test_hosts_filter
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in pods filter tests
- regenerate pods_filter_dataset.jsonl so every pod mirrors the acc-p1
sample pattern from pods_value_accuracy.jsonl (CI-proven expected values)
- test_pods_filter now asserts the 6 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in nodes filter tests
- regenerate nodes_filter_dataset.jsonl so every node mirrors the acc-n1
sample pattern from nodes_value_accuracy.jsonl (CI-proven expected values)
- test_nodes_filter now asserts the 4 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in namespaces filter tests
- regenerate namespaces_filter_dataset.jsonl so every namespace mirrors the
acc-ns-1 sample pattern (2 pods) from namespaces_value_accuracy.jsonl
- test_namespaces_filter now asserts namespaceCPU/namespaceMemory per record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in clusters filter tests
- regenerate clusters_filter_dataset.jsonl so every cluster mirrors the
acc-cluster-1 sample pattern (2 nodes) from clusters_value_accuracy.jsonl
- test_clusters_filter now asserts the 4 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in volumes filter tests
- regenerate volumes_filter_dataset.jsonl so every PVC mirrors the acc-pvc-1
sample pattern from volumes_value_accuracy.jsonl (CI-proven expected values)
- test_volumes_filter now asserts all 6 volume fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align nodes groupby + pod-phase tests with structure
- merge pod_phase_counts_list_mode + _no_pods_on_node into parametrized
test_nodes_pod_phase_counts ((dataset, node, filter, expected) cases)
- rename groupby_cluster -> test_nodes_groupby, parametrize over
k8s.node.name + k8s.cluster.name; adds the node-name-in-groupBy branch
(nodeName populated, condition derived) that hosts/pods both cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align namespaces groupby with structure
- rename groupby_cluster -> test_namespaces_groupby, parametrize over
k8s.namespace.name + k8s.cluster.name; adds the namespace-name-in-groupBy
branch (namespaceName populated) that hosts/pods/nodes all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align clusters groupby with structure
- rename groupby_cloud_provider -> test_clusters_groupby, parametrize over
k8s.cluster.name + cloud.provider; adds the cluster-name-in-groupBy branch
(clusterName populated) that hosts/pods/nodes/namespaces all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align volumes groupby with structure
- rename groupby_namespace -> test_volumes_groupby, parametrize over
k8s.persistentvolumeclaim.name + k8s.namespace.name; adds the
pvc-name-in-groupBy branch (persistentVolumeClaimName populated) that the
other endpoints all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* chore: cleanup waterfall v3 api
We've moved to v4 as part of memory allocation optimisation
* chore: remove select all limit from waterfall request
It was added for testing only and fine tuning the limit value
* chore: update openapi specs
* chore: remove waterfall v2 since we've moved to v4 now
* chore: updated logic and use centralized function in the module
* chore: filter metric groups
* chore: filter metric groups
* chore: formula correction
* chore: added step flooring note
* chore: comment correction
* chore: comment correction
* chore: removed function
* chore: renamed variables
* chore: added happy test
* chore: added test 2 for accuracy and test 3 for missing metrics check
* chore: added filter test 4
* chore: added 5th test for filterByStatus
* chore: added group by tests
* chore: pagination test added
* chore: added validation tests
* chore: added auth test
* chore: added all tests
* chore: fix for surfacing meta for pods custom group by
* chore: added nodes integration test suite
* chore: namespaces integration tests
* ci: register inframonitoring suite + ruff format 01_hosts
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* chore: added integration tests for clusters
* chore: formatting changed
* chore: formatting changed
* chore: formatting changed
* chore: added order by host.name test
* refactor(infra-monitoring): address review comments on hosts integration tests
- inline _post helper at call sites
- combine filter operator tests into parametrized test_hosts_filter
- combine bad attr/grammar tests into parametrized test_hosts_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_hosts_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align pods integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_pods_filter
- combine bad attr/grammar tests into parametrized test_pods_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_pods_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align nodes integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_nodes_filter
- combine bad attr/grammar tests into parametrized test_nodes_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_nodes_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align namespaces integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_namespaces_filter
- combine bad attr/grammar tests into parametrized test_namespaces_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_namespaces_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align clusters integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_clusters_filter
- combine bad attr/grammar tests into parametrized test_clusters_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_clusters_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts groupby tests into parametrized test
- merge test_hosts_groupby_hostname + test_hosts_groupby_os_type into
test_hosts_groupby parametrized on (dataset, group key, expected counts/values)
- preserves all assertions incl hostName populated-vs-empty branch coverage
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts orderby tests into parametrized test
- merge total_invariant_across_orderby + orderby_correctness + orderby_by_host_name
into test_hosts_orderby parametrized on (column, record_field) x direction
- each case asserts both the total/len invariant and sortedness; sortedness now
covered for all metric columns, not just cpu
- single dataset (hosts_orderby.jsonl) + CONTAINS 'order-' guard on all cases
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts pagination tests
- fold offset-beyond-total case into the test_hosts_pagination page walk
(offset K+5 expects 0 records via max(0, min(limit, K-offset)); total
invariant covers the beyond-total page's total == K)
- single seed instead of two
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): merge hosts happy_path into test_hosts_accuracy
- happy_path and value_accuracy datasets were structurally identical
(same 4 metrics, same sample counts, 2 hosts); one test now asserts
shape/contract + exact metric values in a single seed/request
- drop unused hosts_happy_path.jsonl
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine pods integration tests logically
- merge happy_path into test_pods_accuracy (datasets structurally identical);
drop unused pods_happy_path.jsonl
- merge groupby namespace/deployment into parametrized test_pods_groupby
- merge orderby invariant + correctness + by-pod-name into test_pods_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_pods_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine nodes integration tests logically
- merge happy_path into test_nodes_accuracy; drop unused nodes_happy_path.jsonl
- merge orderby invariant + correctness + by-node-name into test_nodes_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_nodes_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine namespaces integration tests logically
- merge happy_path into test_namespaces_accuracy; drop unused namespaces_happy_path.jsonl
- merge orderby invariant + correctness + by-namespace-name into test_namespaces_orderby
- fold offset-beyond-total into test_namespaces_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine clusters integration tests logically
- merge happy_path into test_clusters_accuracy; drop unused clusters_happy_path.jsonl
- merge orderby invariant + correctness + by-cluster-name into test_clusters_orderby
- fold offset-beyond-total into test_clusters_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in hosts filter tests
- regenerate hosts_filter_dataset.jsonl so every host mirrors the acc-h1
sample pattern from hosts_value_accuracy.jsonl (CI-proven expected values)
- test_hosts_filter now asserts cpu/memory/wait/load15/diskUsage per filtered
record against FILTER_DATASET_EXPECTED (1e-9), proving filters don't
distort aggregation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): scope filter expected values inside test_hosts_filter
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in pods filter tests
- regenerate pods_filter_dataset.jsonl so every pod mirrors the acc-p1
sample pattern from pods_value_accuracy.jsonl (CI-proven expected values)
- test_pods_filter now asserts the 6 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in nodes filter tests
- regenerate nodes_filter_dataset.jsonl so every node mirrors the acc-n1
sample pattern from nodes_value_accuracy.jsonl (CI-proven expected values)
- test_nodes_filter now asserts the 4 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in namespaces filter tests
- regenerate namespaces_filter_dataset.jsonl so every namespace mirrors the
acc-ns-1 sample pattern (2 pods) from namespaces_value_accuracy.jsonl
- test_namespaces_filter now asserts namespaceCPU/namespaceMemory per record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in clusters filter tests
- regenerate clusters_filter_dataset.jsonl so every cluster mirrors the
acc-cluster-1 sample pattern (2 nodes) from clusters_value_accuracy.jsonl
- test_clusters_filter now asserts the 4 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align nodes groupby + pod-phase tests with structure
- merge pod_phase_counts_list_mode + _no_pods_on_node into parametrized
test_nodes_pod_phase_counts ((dataset, node, filter, expected) cases)
- rename groupby_cluster -> test_nodes_groupby, parametrize over
k8s.node.name + k8s.cluster.name; adds the node-name-in-groupBy branch
(nodeName populated, condition derived) that hosts/pods both cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align namespaces groupby with structure
- rename groupby_cluster -> test_namespaces_groupby, parametrize over
k8s.namespace.name + k8s.cluster.name; adds the namespace-name-in-groupBy
branch (namespaceName populated) that hosts/pods/nodes all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align clusters groupby with structure
- rename groupby_cloud_provider -> test_clusters_groupby, parametrize over
k8s.cluster.name + cloud.provider; adds the cluster-name-in-groupBy branch
(clusterName populated) that hosts/pods/nodes/namespaces all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* fix(billing): fix cancel subscription flow failing silently for users without a default mail client
* fix(billing): refactor test case
* fix(billing): added log event to the copy template and reopen button
* fix(billing): test case refactor
* fix(billing): use native <a> for mailto retry to maximize cross-browser reliability
* chore: added fastPath
* chore: rearrange and readable
* chore: build fix
* chore: combining two functions into a common flow
* chore: variable name update:
* feat(metrics-explorer): fast path for get treemap in case of no filter (#11459)
* chore: fastpath for treemap
* chore: added fastpath function
* chore: refactor fir common code
* chore: refactor changes
* chore: added tests for get stats and get treemap
* chore: updated logic and use centralized function in the module
* chore: filter metric groups
* chore: filter metric groups
* chore: formula correction
* chore: added step flooring note
* chore: comment correction
* chore: comment correction
* chore: removed function
* chore: renamed variables
* chore: added happy test
* chore: added test 2 for accuracy and test 3 for missing metrics check
* chore: added filter test 4
* chore: added 5th test for filterByStatus
* chore: added group by tests
* chore: pagination test added
* chore: added validation tests
* chore: added auth test
* chore: added all tests
* chore: fix for surfacing meta for pods custom group by
* chore: added nodes integration test suite
* chore: namespaces integration tests
* ci: register inframonitoring suite + ruff format 01_hosts
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* chore: formatting changed
* chore: formatting changed
* chore: formatting changed
* chore: added order by host.name test
* refactor(infra-monitoring): address review comments on hosts integration tests
- inline _post helper at call sites
- combine filter operator tests into parametrized test_hosts_filter
- combine bad attr/grammar tests into parametrized test_hosts_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_hosts_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align pods integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_pods_filter
- combine bad attr/grammar tests into parametrized test_pods_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_pods_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align nodes integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_nodes_filter
- combine bad attr/grammar tests into parametrized test_nodes_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_nodes_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align namespaces integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_namespaces_filter
- combine bad attr/grammar tests into parametrized test_namespaces_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_namespaces_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts groupby tests into parametrized test
- merge test_hosts_groupby_hostname + test_hosts_groupby_os_type into
test_hosts_groupby parametrized on (dataset, group key, expected counts/values)
- preserves all assertions incl hostName populated-vs-empty branch coverage
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts orderby tests into parametrized test
- merge total_invariant_across_orderby + orderby_correctness + orderby_by_host_name
into test_hosts_orderby parametrized on (column, record_field) x direction
- each case asserts both the total/len invariant and sortedness; sortedness now
covered for all metric columns, not just cpu
- single dataset (hosts_orderby.jsonl) + CONTAINS 'order-' guard on all cases
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts pagination tests
- fold offset-beyond-total case into the test_hosts_pagination page walk
(offset K+5 expects 0 records via max(0, min(limit, K-offset)); total
invariant covers the beyond-total page's total == K)
- single seed instead of two
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): merge hosts happy_path into test_hosts_accuracy
- happy_path and value_accuracy datasets were structurally identical
(same 4 metrics, same sample counts, 2 hosts); one test now asserts
shape/contract + exact metric values in a single seed/request
- drop unused hosts_happy_path.jsonl
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine pods integration tests logically
- merge happy_path into test_pods_accuracy (datasets structurally identical);
drop unused pods_happy_path.jsonl
- merge groupby namespace/deployment into parametrized test_pods_groupby
- merge orderby invariant + correctness + by-pod-name into test_pods_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_pods_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine nodes integration tests logically
- merge happy_path into test_nodes_accuracy; drop unused nodes_happy_path.jsonl
- merge orderby invariant + correctness + by-node-name into test_nodes_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_nodes_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine namespaces integration tests logically
- merge happy_path into test_namespaces_accuracy; drop unused namespaces_happy_path.jsonl
- merge orderby invariant + correctness + by-namespace-name into test_namespaces_orderby
- fold offset-beyond-total into test_namespaces_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in hosts filter tests
- regenerate hosts_filter_dataset.jsonl so every host mirrors the acc-h1
sample pattern from hosts_value_accuracy.jsonl (CI-proven expected values)
- test_hosts_filter now asserts cpu/memory/wait/load15/diskUsage per filtered
record against FILTER_DATASET_EXPECTED (1e-9), proving filters don't
distort aggregation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): scope filter expected values inside test_hosts_filter
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in pods filter tests
- regenerate pods_filter_dataset.jsonl so every pod mirrors the acc-p1
sample pattern from pods_value_accuracy.jsonl (CI-proven expected values)
- test_pods_filter now asserts the 6 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in nodes filter tests
- regenerate nodes_filter_dataset.jsonl so every node mirrors the acc-n1
sample pattern from nodes_value_accuracy.jsonl (CI-proven expected values)
- test_nodes_filter now asserts the 4 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in namespaces filter tests
- regenerate namespaces_filter_dataset.jsonl so every namespace mirrors the
acc-ns-1 sample pattern (2 pods) from namespaces_value_accuracy.jsonl
- test_namespaces_filter now asserts namespaceCPU/namespaceMemory per record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align nodes groupby + pod-phase tests with structure
- merge pod_phase_counts_list_mode + _no_pods_on_node into parametrized
test_nodes_pod_phase_counts ((dataset, node, filter, expected) cases)
- rename groupby_cluster -> test_nodes_groupby, parametrize over
k8s.node.name + k8s.cluster.name; adds the node-name-in-groupBy branch
(nodeName populated, condition derived) that hosts/pods both cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align namespaces groupby with structure
- rename groupby_cluster -> test_namespaces_groupby, parametrize over
k8s.namespace.name + k8s.cluster.name; adds the namespace-name-in-groupBy
branch (namespaceName populated) that hosts/pods/nodes all cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* chore: updated logic and use centralized function in the module
* chore: filter metric groups
* chore: filter metric groups
* chore: formula correction
* chore: added step flooring note
* chore: comment correction
* chore: comment correction
* chore: removed function
* chore: renamed variables
* chore: added happy test
* chore: added test 2 for accuracy and test 3 for missing metrics check
* chore: added filter test 4
* chore: added 5th test for filterByStatus
* chore: added group by tests
* chore: pagination test added
* chore: added validation tests
* chore: added auth test
* chore: added all tests
* chore: fix for surfacing meta for pods custom group by
* chore: added nodes integration test suite
* ci: register inframonitoring suite + ruff format 01_hosts
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* chore: formatting changed
* chore: formatting changed
* chore: added order by host.name test
* refactor(infra-monitoring): address review comments on hosts integration tests
- inline _post helper at call sites
- combine filter operator tests into parametrized test_hosts_filter
- combine bad attr/grammar tests into parametrized test_hosts_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_hosts_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align pods integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_pods_filter
- combine bad attr/grammar tests into parametrized test_pods_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_pods_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align nodes integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_nodes_filter
- combine bad attr/grammar tests into parametrized test_nodes_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_nodes_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts groupby tests into parametrized test
- merge test_hosts_groupby_hostname + test_hosts_groupby_os_type into
test_hosts_groupby parametrized on (dataset, group key, expected counts/values)
- preserves all assertions incl hostName populated-vs-empty branch coverage
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts orderby tests into parametrized test
- merge total_invariant_across_orderby + orderby_correctness + orderby_by_host_name
into test_hosts_orderby parametrized on (column, record_field) x direction
- each case asserts both the total/len invariant and sortedness; sortedness now
covered for all metric columns, not just cpu
- single dataset (hosts_orderby.jsonl) + CONTAINS 'order-' guard on all cases
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts pagination tests
- fold offset-beyond-total case into the test_hosts_pagination page walk
(offset K+5 expects 0 records via max(0, min(limit, K-offset)); total
invariant covers the beyond-total page's total == K)
- single seed instead of two
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): merge hosts happy_path into test_hosts_accuracy
- happy_path and value_accuracy datasets were structurally identical
(same 4 metrics, same sample counts, 2 hosts); one test now asserts
shape/contract + exact metric values in a single seed/request
- drop unused hosts_happy_path.jsonl
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine pods integration tests logically
- merge happy_path into test_pods_accuracy (datasets structurally identical);
drop unused pods_happy_path.jsonl
- merge groupby namespace/deployment into parametrized test_pods_groupby
- merge orderby invariant + correctness + by-pod-name into test_pods_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_pods_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine nodes integration tests logically
- merge happy_path into test_nodes_accuracy; drop unused nodes_happy_path.jsonl
- merge orderby invariant + correctness + by-node-name into test_nodes_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_nodes_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in hosts filter tests
- regenerate hosts_filter_dataset.jsonl so every host mirrors the acc-h1
sample pattern from hosts_value_accuracy.jsonl (CI-proven expected values)
- test_hosts_filter now asserts cpu/memory/wait/load15/diskUsage per filtered
record against FILTER_DATASET_EXPECTED (1e-9), proving filters don't
distort aggregation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): scope filter expected values inside test_hosts_filter
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in pods filter tests
- regenerate pods_filter_dataset.jsonl so every pod mirrors the acc-p1
sample pattern from pods_value_accuracy.jsonl (CI-proven expected values)
- test_pods_filter now asserts the 6 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in nodes filter tests
- regenerate nodes_filter_dataset.jsonl so every node mirrors the acc-n1
sample pattern from nodes_value_accuracy.jsonl (CI-proven expected values)
- test_nodes_filter now asserts the 4 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align nodes groupby + pod-phase tests with structure
- merge pod_phase_counts_list_mode + _no_pods_on_node into parametrized
test_nodes_pod_phase_counts ((dataset, node, filter, expected) cases)
- rename groupby_cluster -> test_nodes_groupby, parametrize over
k8s.node.name + k8s.cluster.name; adds the node-name-in-groupBy branch
(nodeName populated, condition derived) that hosts/pods both cover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* chore: updated logic and use centralized function in the module
* chore: filter metric groups
* chore: filter metric groups
* chore: formula correction
* chore: added step flooring note
* chore: comment correction
* chore: comment correction
* chore: removed function
* chore: renamed variables
* chore: added happy test
* chore: added test 2 for accuracy and test 3 for missing metrics check
* chore: added filter test 4
* chore: added 5th test for filterByStatus
* chore: added group by tests
* chore: pagination test added
* chore: added validation tests
* chore: added auth test
* chore: added all tests
* chore: fix for surfacing meta for pods custom group by
* ci: register inframonitoring suite + ruff format 01_hosts
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* chore: formatting changed
* chore: added order by host.name test
* refactor(infra-monitoring): address review comments on hosts integration tests
- inline _post helper at call sites
- combine filter operator tests into parametrized test_hosts_filter
- combine bad attr/grammar tests into parametrized test_hosts_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_hosts_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): align pods integration tests with review feedback
- inline _post helper at call sites
- combine filter operator tests into parametrized test_pods_filter
- combine bad attr/grammar tests into parametrized test_pods_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_pods_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts groupby tests into parametrized test
- merge test_hosts_groupby_hostname + test_hosts_groupby_os_type into
test_hosts_groupby parametrized on (dataset, group key, expected counts/values)
- preserves all assertions incl hostName populated-vs-empty branch coverage
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts orderby tests into parametrized test
- merge total_invariant_across_orderby + orderby_correctness + orderby_by_host_name
into test_hosts_orderby parametrized on (column, record_field) x direction
- each case asserts both the total/len invariant and sortedness; sortedness now
covered for all metric columns, not just cpu
- single dataset (hosts_orderby.jsonl) + CONTAINS 'order-' guard on all cases
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts pagination tests
- fold offset-beyond-total case into the test_hosts_pagination page walk
(offset K+5 expects 0 records via max(0, min(limit, K-offset)); total
invariant covers the beyond-total page's total == K)
- single seed instead of two
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): merge hosts happy_path into test_hosts_accuracy
- happy_path and value_accuracy datasets were structurally identical
(same 4 metrics, same sample counts, 2 hosts); one test now asserts
shape/contract + exact metric values in a single seed/request
- drop unused hosts_happy_path.jsonl
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine pods integration tests logically
- merge happy_path into test_pods_accuracy (datasets structurally identical);
drop unused pods_happy_path.jsonl
- merge groupby namespace/deployment into parametrized test_pods_groupby
- merge orderby invariant + correctness + by-pod-name into test_pods_orderby
((column, record_field) x direction; sortedness now covered for all columns)
- fold offset-beyond-total into test_pods_pagination page walk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in hosts filter tests
- regenerate hosts_filter_dataset.jsonl so every host mirrors the acc-h1
sample pattern from hosts_value_accuracy.jsonl (CI-proven expected values)
- test_hosts_filter now asserts cpu/memory/wait/load15/diskUsage per filtered
record against FILTER_DATASET_EXPECTED (1e-9), proving filters don't
distort aggregation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): scope filter expected values inside test_hosts_filter
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in pods filter tests
- regenerate pods_filter_dataset.jsonl so every pod mirrors the acc-p1
sample pattern from pods_value_accuracy.jsonl (CI-proven expected values)
- test_pods_filter now asserts the 6 CPU/memory fields per filtered record
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test(infra-monitoring): drop dangling generator-script reference in pods tests
pods_phases.jsonl comment referenced tests/gen_pods_datasets.py, which was
never committed. Reword to describe the committed dataset instead.
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* feat: adding support for Azure AKS
* refactor: updating metric names in integration config
* chore: generating OpenAPI spec
* chore: adding note in overview
* refactor: updating spatial aggregation and other names
* refactor: updating reduceTo to empty value
* refactor: updating title
* chore: updated logic and use centralized function in the module
* chore: filter metric groups
* chore: filter metric groups
* chore: formula correction
* chore: added step flooring note
* chore: comment correction
* chore: comment correction
* chore: removed function
* chore: renamed variables
* chore: added happy test
* chore: added test 2 for accuracy and test 3 for missing metrics check
* chore: added filter test 4
* chore: added 5th test for filterByStatus
* chore: added group by tests
* chore: pagination test added
* chore: added validation tests
* chore: added auth test
* chore: fix for surfacing meta for pods custom group by
* ci: register inframonitoring suite + ruff format 01_hosts
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* chore: added order by host.name test
* refactor(infra-monitoring): address review comments on hosts integration tests
- inline _post helper at call sites
- combine filter operator tests into parametrized test_hosts_filter
- combine bad attr/grammar tests into parametrized test_hosts_filter_invalid
- convert orderby total-invariant nested loop to stacked parametrize
- drop redundant test_hosts_auth (auth covered globally)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts groupby tests into parametrized test
- merge test_hosts_groupby_hostname + test_hosts_groupby_os_type into
test_hosts_groupby parametrized on (dataset, group key, expected counts/values)
- preserves all assertions incl hostName populated-vs-empty branch coverage
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts orderby tests into parametrized test
- merge total_invariant_across_orderby + orderby_correctness + orderby_by_host_name
into test_hosts_orderby parametrized on (column, record_field) x direction
- each case asserts both the total/len invariant and sortedness; sortedness now
covered for all metric columns, not just cpu
- single dataset (hosts_orderby.jsonl) + CONTAINS 'order-' guard on all cases
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): combine hosts pagination tests
- fold offset-beyond-total case into the test_hosts_pagination page walk
(offset K+5 expects 0 records via max(0, min(limit, K-offset)); total
invariant covers the beyond-total page's total == K)
- single seed instead of two
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): merge hosts happy_path into test_hosts_accuracy
- happy_path and value_accuracy datasets were structurally identical
(same 4 metrics, same sample counts, 2 hosts); one test now asserts
shape/contract + exact metric values in a single seed/request
- drop unused hosts_happy_path.jsonl
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(infra-monitoring): assert metric value accuracy in hosts filter tests
- regenerate hosts_filter_dataset.jsonl so every host mirrors the acc-h1
sample pattern from hosts_value_accuracy.jsonl (CI-proven expected values)
- test_hosts_filter now asserts cpu/memory/wait/load15/diskUsage per filtered
record against FILTER_DATASET_EXPECTED (1e-9), proving filters don't
distort aggregation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(infra-monitoring): scope filter expected values inside test_hosts_filter
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* refactor(uPlotV2): split Legend into presentational + uPlot controller
Separate the legend into a presentational `Legend` (renders supplied items +
delegated handlers, with search/copy/virtualization) and a `UPlotLegend`
controller that wires it to the uPlot config via useLegendsSync/useLegendActions.
This lets non-uPlot charts reuse the legend. ChartWrapper now renders UPlotLegend
(behaviour unchanged for TimeSeries/Bar/Histogram). Also fixes the copy-button
hover layout shift (reserve space, fade via opacity) and uses @signozhq/ui
tooltips for legend items.
* feat(charts): add shared Pie chart component
Add a reusable @visx donut Pie chart (charts/Pie) that consumes the shared
presentational Legend: chart/legend split via calculateChartDimensions,
search/copy, hover-sync, slice hide/unhide (mirrors the uPlot legend) with
localStorage persistence, leader labels and a centre total. Split into PieArc /
PieCenterLabel / usePieInteractions for readability.
Also renames the tooltip click payload TooltipClickData -> ChartClickData across
the TooltipPlugin and chart prop types (the type describes any chart click, not
just tooltips).
* test(charts): add Pie chart + usePieInteractions tests
Cover the shared Pie chart and its helpers/hook:
- utils: scaled font size, arc geometry, colour lighten/fill dimming
- usePieInteractions: marker toggle, label isolate/reset, hover focus,
hidden-slice guard, localStorage persistence + rehydration
- PieArc: leader-label threshold, label truncation, enter/leave/click
- PieCenterLabel: numeric/unit split
- Pie: no-data state, arc-per-slice rendering, legend, layout per position,
hide-on-marker-click
Adds a global ResizeObserver polyfill to jest.setup.ts (alongside the existing
IntersectionObserver one) since visx's useTooltipInPortal requires it.
* chore: pr review fixes
* chore: pr review comments
* chore: pr review comments
* feat: add types for flamegraph v3 in module structure
* chore: remove limit from request payload
It's a new api so doesn't need to be backward compatible
* feat: add config for flamegraph
* feat: add method to enrich selected spans
* feat: add api and module for flamegraph v3
* feat: query full spans for smaller traces
* chore: move exported methods to the top
* chore: ignore nil assigment lint error
* chore: extract out flamegraph building logic for easier review
* chore: update openapi specs
* chore: move flamegraph after aggregation to reduce diff
* chore: remove un related changes to keep diff minimum
* chore: avoid passing request type to module
* feat: return selected fields only in flamegraph
And reduce the no. of fields scanned from db
* chore: make array fields required and non nullable
* chore: update openapi specs
* chore: mark all fields in response as required
* refactor: switch to using group by instead of distinct on
Since group by is faster is enough no. of threads are used
* chore: remove service name root level field from flamegraph span
* chore: update openapi specs
* fix: update alias in order by of the query
* chore: remove unnecessary nil check
* fix: set empty array for missing data
* chore: use single line for error creation
* chore: mark response fields as required
* chore: update openapi specs
* chore: add test to verify the flamegraph query sql
* chore: update openapi specs
* chore: use orderbyasc instead of order by
* fix(authn): include base path in SSO callback and error-redirect URLs
The SAML ACS URL and the OIDC/Google redirect URLs were built from the
site URL host plus a hardcoded path (e.g. /api/v1/complete/saml), dropping
the base path. When SigNoz is served under a sub-path (global.external_url
with a path, e.g. https://example.com/signoz), the API is served at
<prefix>/api/v1/complete/<provider>, so the identity provider was told to
call back to a path without the prefix and hit a 404.
Thread global.Config into the SAML/OIDC/Google callback providers and the
session handler, and prepend global.Config.ExternalPath() to the callback
paths and the SSO error redirect to /login. Root deployments are
unchanged since ExternalPath() returns "" without a configured sub-path.
* fix(authn): run callbackauthn suite with base path
* refactor(tests): self-contained base-path fixture for callbackauthn
Move the base-path setup out of the shared create_signoz factory and into
a package-scoped signoz fixture in the callbackauthn suite's own conftest
(same pattern as rootuser/conftest.py). When --base-path is set the fixture
appends SIGNOZ_GLOBAL_EXTERNAL__URL and the url-config prefix locally;
without it it behaves exactly like the global fixture. The shared factory
and docker config are left untouched.
* test(authn): add base-path SSO integration suite
Adds a dedicated `basepath` integration suite that serves SigNoz under a
hardcoded /signoz prefix (SIGNOZ_GLOBAL_EXTERNAL__URL) and exercises the SAML
and OIDC happy-path logins end-to-end. Every SigNoz API call is issued under
the prefix and the IdP callback (ACS / redirect URI) is registered with the
prefix, so the flow only passes when the backend builds prefixed callback URLs.
The shared TestContainerUrlConfig and create_signoz factory are left untouched.
The suite's conftest shadows the same-named auth fixtures (create_user_admin,
get_token, get_session_context, apply_license) with base-path-aware variants and
reuses the Keycloak/browser fixtures, which are not under the base path.
Google SSO is not covered: it requires the real accounts.google.com issuer and
a real Google login, so it cannot run against the local Keycloak IdP; it shares
the identical path.Join(ExternalPath, redirectPath) callback logic that SAML
and OIDC validate.
* revert: drop in-place base-path wiring from integration harness
Removes the --base-path flag, TestContainerUrlConfig.base_path, the idp.py and
02_saml.py .get() changes, and the callbackauthn base-path conftest fixture.
Base-path SSO is now covered by the dedicated `basepath` suite, so the shared
harness (TestContainerUrlConfig, create_signoz, callbackauthn) is back to its
original root-only form.
* refactor(test): remove apply_license fixture
* refactor(test): extract base-path-aware auth factories
Extract the session-context / token / token-pair / admin-registration logic
in fixtures/auth.py into reusable factory functions that take an optional
base_path (token_getter, session_context_getter, tokens_getter, register_admin),
with the fixtures delegating to them. Default base_path="" is byte-identical for
existing callers.
The basepath suite's conftest now reuses these factories with the /signoz prefix
as thin one-line fixture overrides instead of duplicating the request logic.
* refactor(test): give base-path admin registration a distinct cache key
register_admin takes an optional cache_key (default "create_user_admin"); the
basepath suite passes a distinct key so that under --reuse the admin marker
cached against the signoz-base-path container is not restored for (or from)
other suites' default signoz instance.
* feat(billing): migrate BillingUsageGraph from uPlotLib to uPlotV2 and added stacking
* feat(billing): revamp billing page UI to match Settings Revamp designs
* feat(billing): refactor and feedback fixes
* feat(billing): test case fix and css refactor
* feat(billing): css fix
* feat(billing): migrate BillingContainer and BillingUsageGraph to CSS modules
* feat(billing): feedback fixes
* feat: wire available colors on spans instead of aggregations from waterfall api
* feat: integrate aggregation api
* feat: integrate v4 waterfall
* feat: dropdown style fix
* feat: move to open api spec
* feat: move to open api spec
* feat: minor changes
* refactor(sentry-config): disable tracing & ensure correct environment
* refactor(sentry-config): derive environment from build-time env var
Replace the runtime hostname-based getCurrentEnvironment() with a
build-time process.env.ENVIRONMENT value. The environment is injected
once at build time via VITE_ENVIRONMENT, wired through the vite define
block, and consumed directly by Sentry.init.
Staging builds bake in 'staging' and enterprise builds bake in
'production'.
* refactor(sentry-config): keep browserTracingIntegration for transaction tag
Tracing stays disabled (tracesSampleRate: 0), but the integration is
retained so the transaction tag remains available for routing.
Ref: https://github.com/SigNoz/platform-pod/issues/2393#issuecomment-4603658055
* feat(sentry-config): set Sentry release from VITE_VERSION
Set release in Sentry.init from process.env.VERSION (VITE_VERSION, default 'dev') and pin the @sentry/vite-plugin upload release to the same value so sourcemaps resolve. Plumb VITE_VERSION through build-enterprise & build-staging (make info-version) and gor-signoz (tag).
* fix(sentry-config): align Sentry.init indentation and set VITE_ENVIRONMENT for gor-signoz
* fix(sentry-config): require VITE_VERSION for sourcemap upload
Refuse to register the Sentry vite plugin without an explicit VITE_VERSION, and drop the 'dev' fallback for both the plugin release name and process.env.VERSION so a sourcemap upload can never happen without a matching release.
---------
Co-authored-by: grandwizard28 <vibhupandey28@gmail.com>
* chore: follow proper unmarshal json method structure
* feat: v2 create dashboard API
* fix: only return name of a tag in dashboard response
* fix: use existing tag's casing if new tag is a prefix of an existing tag
* fix: go lint fix
* fix: more dashboard request validations
* chore: separate method for validation
* fix: module should also validate postable dashboard
* test: integration tests for create API
* test: integration test fixes
* chore: use existing mapper
* fix: remove extra spec from builder query marshalling
* fix: merge conflicts
* feat: v2 dashboard GET API
* feat: v2 dashboard update API
* fix: add allowed values in err messages
* fix: remove extra (un)marshal cycle
* fix: return 500 err if spec is nil for composite kind w/ code comment
* fix: no need for copying textboxvariablespec
* fix: wrap errors
* chore: no v2 subpackage
* fix: no v2 package and its consequences
* fix: no v2 package and its consequences
* Merge branch 'nv/v2-dashboard-create' into nv/v2-dashboard-get
* fix: merge fixes
* fix: query-less panels not allowed
* feat: consolidate tag module and tagtypes changes from downstream branches
* chore: update api specs
* chore: update api specs
* fix: allow only 1 query in a panel
* test: unit test fixes
* feat: method to fetch tags for multiple entries at once
* test: fix mock interface in test
* feat: move tags to key:value pairs model
* feat: entity type column in tags
* fix: pass entity type in create many
* feat: reserved DSL key validation for tags
* feat: new module for tags
* chore: merge conflicts error fixing pt 1
* fix: lint fix regarding nil, nil return in test file
* chore: change where tag module is instantiated
* fix: add back api endpoint
* chore: generate api spec
* fix: remove soft delete references
* chore: embed StorableDashboard into joinedRow in store method
* fix: extend bun in joinedRow
* fix: compile error fix
* fix: remove soft delete references
* feat: method to build postable tags from tags
* fix: diff error codes for invalid keys and values
* fix: correct pk in bun model for tag relations
* fix: created and updated by schema
* fix: use coretypes.Kind instead of defining entity type
* fix: singular table name
* chore: remove org ID from tag relation
* feat: foreign key on tag id
* feat: add SyncTags method that covers creation and linking
* fix: remove entity type definition
* fix: fix build errors in dashboard module
* chore: bump migration number
* chore: change entity id to resource id
* fix: add org id filter in all list and delete queries
* fix: remove user auditable
* fix: add ID in tag relation
* fix: fix build error
* fix: fix build error
* chore: bump migration number
* fix: add len check on tags keys and values
* fix: add regex for tags
* chore: remove methods that shouldn't be exposed
* fix: use sync tags in create api
* feat: functional unique index in sql schema
* fix: only ascii in regex
* fix: use sync tags method in update
* chore: rename create method to createOrGet
* chore: use tagtypestest package for mock store
* chore: combine functional unique index with unique index
* chore: move tag resolution to module
* test: add unit tests for new idx type
* chore: comment out tags unique index for now
* chore: add a todo comment
* chore: comment out unique index test
* feat: add created at to tag relations
* chore: comment out unique index test
* chore: bump migration number
* chore: remove uploaded grafana flag from metadata
* Merge branch 'main' into nv/v2-dashboard-create
* chore: revert idx generation to resolve conflicts
* fix: use store.RunInTx instead of taking in sqlstore
* fix: use binding package to get request
* chore: move NewDashboardV2 to NewDashboardV2WithoutTags
* chore: rename module to m
* fix: add ctx needed in sqlstore
* fix: remove sqlstore passage in ee pkg
* chore: change dashboardData to dashboardSpec
* feat: follow the metadata+spec key structure
* feat: follow the metadata+spec key structure in open api spec
* feat: v2 dashboard GET API (#11136)
* feat: v2 dashboard GET API
* Merge branch 'nv/v2-dashboard-create' into nv/v2-dashboard-get
* chore: update api specs
* fix: remove soft delete references
* chore: embed StorableDashboard into joinedRow in store method
* fix: fix build error
* chore: revert all frontend changes
* fix: remove public dashboard from get v2 call
* chore: revert all frontend changes
* fix: fix build errors post merge conflict resolution
* feat: lock, unlock, create public, update public v2 dashboard APIs (#11167)
* feat: lock, unlock, create public, update public v2 dashboard APIs
* chore: update api specs
* fix: use new pattern of checking for admin permission
* fix: remove soft delete reference
* chore: revert all frontend changes
* fix: fix build errors and remove v2 create/update public apis
* chore: use v1 methods wherever possible
* fix: use update v2 store method
* chore: update frontend schema
* chore: update frontend schema
* chore: generate api specs
* chore: generate api specs
* feat: patch dashboard api (#11182)
* feat: lock, unlock, create public, update public v2 dashboard APIs
* feat: delete dashboard v2 API and hard delete cron job
* feat: patch dashboard api
* chore: update api specs
* chore: update api specs
* chore: update api specs
* chore: remove delete related work
* fix: add examples of structs for value param in param description
* test: unit test fixes
* fix: use new pattern of checking for admin permission
* fix: remove soft delete reference
* test: key value tags in test
* fix: build error in patch module method
* fix: build error in Apply method
* fix: use sync tags method in update
* fix: fix build errors
* fix: fix all patch application tests
* chore: add more mapper methods
* fix: add source for v2 dashboards
* chore: incorporate source
* chore: incorporate source in api spec
* chore: incorporate source
* fix: add some required fields
* feat: add immutable name in dashboard v2
* feat: add immutable name in dashboard v2
* feat: add immutable name in dashboard v2 api specs
* fix: remove unused param in constructor
* fix: improve api descriptions
* fix: remove unneeded comment
* chore: increase MaxTagsPerDashboard to 10
* fix: set display name in unmarshal json
* chore: remove integration test for now (will add along with list api)
* feat: add validation on dashboard name
* test: fix build errors and tests based on name related changes
* fix: correct convertor method name
* test: add unit tests for type conversions
* chore: remove enum def of threshold comparison operator
* feat: add flag to generate unique name in backend
* chore: generate api specs
* chore: make tags required in postable
* fix: build error fix
* fix: fix build error in test after merge conflict
* fix: remove unused store method
* fix: remove unused module methods
* fix: use v1 store update method
* fix: change data to spec in api param description
* chore: add back accidentally removed tests
* fix: address review comments
* chore: generate frontend api spec
* chore: use same jsonpatch package as done in zeus
* chore: remove JSONPatchDocument and use patchable everywhere
* fix: make remove idempotent in patch
* chore: separate file for patch types
* chore: better error passage
* fix: remove extra decodePatch calls
* fix: use must new org id
* fix: proper error passage
* chore: rename updateable to updatable
---------
Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
* fix: time not being updated issue in domainlist and traces
* refactor: make a hook
* chore: more refactor
* fix: test cases
* fix: test cases
* refactor: code
* fix: add test cases
* fix: test cases
---------
Co-authored-by: Gaurav Tewari <tewarig@users.noreply.github.com>
* test(alerts): add tests for triggered and list alerts page
* test(alerts): add tests for list alerts and triggered alerts
* test(fireEvent): replace by userEvent
Removes the useEffect that captured a Sentry warning when a widget's
query range was not called within 120s, along with the now-unused
queryRangeCalledRef and the @sentry/react import in GridCard.
ClosesSigNoz/engineering-pod#5217
* fix: the query being updated after deleting the variables
* fix: use exact variable string match when removing clauses on delete
Passing `true` to removeKeysFromExpression removed the first clause whose
value contained any `$`, which corrupted expressions when two variables
shared the same filter attribute (e.g. $env and $env_region both backed
by deployment.environment). Switching to the exact variable string
(`$${variableName}`) ensures only the deleted variable's clause is removed.
Also adds 9 targeted edge-case tests covering shared-key variables,
variable-name boundary ($env vs $environment), mixed literal/variable
clauses, multi-value array filter items, clickhouse_sql, idempotency,
empty widgets, and unrelated-variable no-ops.
* fix: refined the deletiong process
* fix: adding toast
* fix: resolved comments
* fix: updated the tests and moved func to utils
* chore: add metric for waterfall monitoring
Gauge for config limit and counter to count large traces
* chore: use traces instead of tracedetail in metric name
* chore: try removing high cardinality attributes
* chore: use typed argument in logs
* chore: add another metric to get idea of trace sizes
* chore: change config namespace to trace instead of tracedetail
To make it consistant with metric namespaces
* chore: add unit to the windowed response count metric
* chore: use metrics names as per otel conventions
* chore: use constants for metric attributes
* refactor: return error on metric creation failure
* Revert "refactor: return error on metric creation failure"
This reverts commit 091c93e80b.
* chore: panic on metric initiliazation error
* fix: show warning for non-existent cost meter metrics
* chore: lint fix by removing unused list
* chore: py fmt add new line
* chore: missing newline between tests
* fix: no warnings or errors for internal metrics
* fix: pylint fix by adding new line
* fix: lint fix in test
Replaces the `SuccessResponse<...> & { warning?: Warning; meta?: ExecStats }`
intersection with a single interface that extends SuccessResponse and declares
warning + meta on its own — no stitched intersection. Also types `params` as
`QueryRangeRequestV5` (was `unknown`), so callers can drop the redundant
`as QueryRangeRequestV5` casts.
Knock-on updates: 13 consumers switched from the raw
`SuccessResponse<MetricRangePayloadProps, unknown>` shape to the new
`MetricQueryRangeSuccessResponse`; 3 prod casts removed;
convertV5ResponseToLegacy and getTimeRange tightened their accept-params types.
* fix: resolve UX regressions across dashboards, metrics and alerts pages after component migration
- NewSelect: make the @signozhq checkbox label fill the row (min-width: 0)
so long option text truncates with an ellipsis; size Only/Toggle buttons to
the resting row height so hover no longer grows the row
- PlannedDowntime: reset field-label styles bleeding into the migrated
RadioGroup option labels and add spacing between options
- Page-level contrast, spacing, alignment and icon-size fixes across
dashboard settings, metrics explorer, alert rules, routing policies,
auto-refresh and the time picker
* fix(multiselect): surface clear icon and remove dropdown double-scroll
- add .ant-select-clear color override so the multiselect clear (x) icon is
visible on the dark selector (the single-select had it, multiselect didn't)
- raise the dropdown max-height so the react-virtuoso list (<=300px) plus the
header/footer fits, leaving the list as the single scroller instead of the
list and the container both scrolling
- StatsCard: drop the unnecessary !important on .count-label color
* fix: success colors
* feat: field selector migrated to telemetry field key
* feat: move floating panel to field selector
* feat: sync columns state in logs
* feat: sync columns state in traces
* feat: logs field migration integrate
* feat: traces field migration integrate
* feat: minor refactor
* feat: tests updated
* feat: move to key from name on fields for logs and traces
* feat: update tests
* feat: update tests
* feat(auth): validate reset password token on page load before showing form
* fix(auth): distinct error copy for expired vs invalid token; skip 401 rotation on verify endpoint
* fix(auth): use endsWith for orval-generated endpoint guards in interceptorRejected
* Revert "fix(auth): use endsWith for orval-generated endpoint guards in interceptorRejected"
This reverts commit 00aa23b8fc.
Noz launched under early access and its three entry points (header button,
floating trigger, sidebar nav item) previously showed a bare "Noz" tooltip,
which does not educate users who don't yet recognize the name. Replace it with
a shared descriptive tooltip ("Noz, your AI teammate") sourced from a single
constant so the surfaces never drift.
- Add NOZ_TOOLTIP_TITLE in components/Noz/Noz.constants.ts
- Header button and floating trigger read the constant
- Add optional tooltip field to SidebarItem; NavItem wraps the whole row in a
Tooltip (non-pinnable items only, to avoid nesting with the pin tooltip)
- Move the trigger's Noz icon to the Button prefix slot to match the codebase
convention for icon-only buttons
* feat: add endpoint & module for trace aggregations
* chore: use v1 for aggregations api
* chore: update openapi specs
* feat: add implementation for aggregation store
* chore: use query builder for count by field
* chore: remove support for aggregations on attributes
Only supporting resource fields for now, since this
is not user input but hard coded client experience
* chore: extract out inner query as cte
* chore: again extract out inner query
* chore: move end_ns computation to first cte for simplicity
* chore: use notEmpty function instead of having
* fix: type cast issue in sum function
* chore: use query builder for duration query as well
* chore: add tests for trace store sql
* chore: remove unnecessary column checks
* chore: format the expected sql queries
* fix: formating was breaking test
* fix: change import and remove formating from sql
* chore: remove formating from store impl as well
* fix: mark required fields as required
* fix: explicitly mark nullable false for required field
* fix: mark required fields in response as well
* feat: field selector migrated to telemetry field key
* feat: move floating panel to field selector
* feat: sync columns state in logs
* feat: sync columns state in traces
* feat: add useIsDashboardV2 hook
* feat(dashboards-list-v2): page shell
* feat(dashboards-list-v2): loading / error / empty / no-results state components
* feat(dashboards-list-v2): SearchBar input component
* feat(dashboards-list-v2): CreateDashboardDropdown (new / import JSON entry)
* feat(dashboards-list-v2): DashboardRow + per-row ActionsPopover with v2 delete
* feat(dashboards-list-v2): ListHeader with sort/order + Configure Metadata trigger
* feat(dashboards-list-v2): JSON import modal (Monaco editor + sample)
* feat(dashboards-list-v2): Configure Metadata modal + persisted visible-columns store
* feat(dashboards-list-v2): wire list to v2 API with pagination, URL state, debounced search
* chore: park v2 dashboard pages until backend lands on main
* refactor(dashboards-list-v2): extract lastUpdatedLabel into utils
Dedupe the relative-time formatter that was copied into both DashboardRow
and ConfigureMetadataModal. Single source in DashboardsListPageV2/utils.ts.
* refactor(dashboards-list-v2): group state components under states/
Move EmptyState, ErrorState, LoadingState, and NoResultsState under
components/states/. They're a coherent family (interchangeable view
branches in the list orchestrator) and grouping them sets up shared
styling extraction next.
Pure relocation — git mv preserves history; only DashboardsList.tsx's
imports change.
* refactor(dashboards-list-v2): extract shared state wrapper styles
Pull the dashed-border card layout, body text, and learn-more CTA into
states/states.module.scss. EmptyState, ErrorState, and NoResultsState
now compose from the shared base and only declare what differs
(padding, gap, color, font-weight). LoadingState is a different shape
(skeleton stack) and stays untouched.
Cascaded properties are byte-equivalent — pure de-duplication.
* refactor(dashboards-list-v2): port to @signozhq/ui primitives
Replace antd Button/Input usages and bespoke <button> rows with the
@signozhq/ui equivalents across the four review-flagged surfaces:
- EmptyState "Learn more" → Button variant="link" color="primary"
- ErrorState "Retry" → Button variant="outlined" color="secondary"
with prefix icon; drops the sub-pixel .retryButton overrides in
favour of the variant's tokenized layout.
- ErrorState "Contact Support" → Button variant="link" color="primary"
- SearchBar Input → signoz Input (data-testid → testId)
- ActionsPopover rows → Button variant="ghost" color="secondary"
(color="destructive" for Delete) with prefix icons
- ActionsPopover trigger → Button size="icon" variant="ghost"
The signoz button variant handles the icon-slot alignment that the
removed .actionItem styling reimplemented manually, so the bulk of
ActionsPopover SCSS is deleted. A minimal .menuItem class still
left-aligns + fills the popover row, and .deleteDivider keeps the
hairline separator above the destructive action.
Popover itself stays on antd — migrating to @signozhq/ui/dropdown-menu
is deferred (same TODO as CreateDashboardDropdown).
* style(dashboards-list-v2): use font tokens across new SCSS
Replace literal font-size/weight values across the V2 page SCSS with
the shared design-token custom properties already used elsewhere:
- 14px → var(--font-size-sm)
- 12px → var(--font-size-xs)
- 400 → var(--font-weight-normal)
- 500 → var(--font-weight-medium)
- 600 → var(--font-weight-semibold)
ErrorState.module.scss was tokenized alongside its .retryButton
removal in the previous commit. Three literals remain because they
have no clean token equivalent: 11px (sub-token), 8px (avatar
initial), and 12.805px (sub-pixel artifact from a Figma export,
a separate concern).
* style(dashboards-list-v2): replace sub-pixel padding in CreateDashboardDropdown
Round 5.937px / 11.875px / 1.484px to clean integer pixel values
(6px / 12px / 2px). The sub-pixel values were the "trial-and-error"
artifact reviewer flagged — likely a Figma scaling round-trip.
Difference is sub-pixel and not visible on any standard DPR.
* feat(dashboards-list-v2): treat search input as DSL with explicit submission
What the user types is what gets sent to the API as the `query`
param — no more wrapping the input in a synthesized
`name CONTAINS '…' or description CONTAINS '…'` clause.
This gives users the full DSL surface (name, description, created_by,
created_at, updated_at, locked, public, source, tag-key equality)
instead of the name+description CONTAINS approximation.
Submission is explicit (Enter, blur, or a return-key icon button
in the input's suffix slot) so an in-progress DSL string never
hits the API mid-typing. On error, the toolbar (search + create)
stays visible above the ErrorState so users can edit and retry
without losing their place.
- Drop buildSearchDSL helper and the 300ms debounce.
- Pass searchInput.trim() to the API; empty input clears filter.
- SearchBar gains onSubmit (Enter / blur / suffix click).
- Move ErrorState below the toolbar in DashboardsList layout.
- Sync local input from searchString on URL changes (back/fwd).
- Placeholder updated to hint at DSL syntax.
Trade-off: a bare "foo" no longer matches anything; users now need
to type "name CONTAINS 'foo'". This is the new UX.
* fix(dashboards-list-v2): tighten ActionsPopover button styling
- Drop variant="ghost" on the three non-destructive row buttons so
they pick up the signoz Button default.
- Use <Divider /> from @signozhq/ui above the destructive Delete
button instead of a bespoke .deleteDivider class.
- Drop the surrounding .content padding and the now-unused
.deleteDivider rule. Keep .menuItem for left-alignment + width.
* fix(dashboards-list-v2): surface DSL parse errors on 400 responses
When the BE rejects the search query with a 4xx, show the server-
provided detail (e.g. `invalid filter query: unsupported expression
"asdas" — every term must be of the form \`key OP value\``) instead
of the generic "Something went wrong" panel.
- ErrorState gains optional httpStatus + errorMessage props.
For 4xx it renders a two-line layout (title + cleaned detail)
and drops the Retry button (retrying the same bad query won't
help). Contact Support stays.
- Add formatQueryErrorMessage util: strips the "invalid filter
query:" prefix that the FE title already implies, and rewrites
backtick-quoted format hints to use double quotes.
- DashboardsList extracts status + message via toAPIError and
passes them through. Search toolbar remains visible above the
error, so the user can fix and resubmit.
* chore: fix lint error due to rebase
2026-06-01 08:48:50 +00:00
706 changed files with 49311 additions and 6737 deletions
replaysSessionSampleRate: 0.1,// This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.
replaysOnErrorSampleRate: 1.0,// If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.
* This endpoint applies an RFC 6902 JSON Patch to a v2-shape dashboard. The patch is applied against the postable view of the dashboard (metadata, data, tags), so individual panels, queries, variables, layouts, or tags can be updated without re-sending the rest of the dashboard. Apply is lenient: `remove` on a missing path is a no-op (idempotent) and `add` creates any missing parent objects, rather than failing as strict RFC 6902 would. The resulting dashboard is still validated. Locked dashboards are rejected.
* Returns the waterfall view of spans including all spans if total spans are under a limit, a max count otherwise. Aggregations are dropped compared to v3
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.