Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
 
 
 
 
 
 
Go to file
hc-github-team-consul-core da2a57239e
Backport of Introduce randomized timings and reproducible randomization into controller integration tests. into release/1.17.x (#19575)
Introduce randomized timings and reproducible randomization into controller integration tests.

As the V2 architecture hinges on eventual consistency and controllers reconciling the existing state in response to writes, there are potential issues we could run into regarding ordering and timing of operations. We want to be able to guarantee that given a set of resources the system will always eventually get to the desired correct state. The order of resource writes and delays in performing those writes should not alter the final outcome of reaching the desired state.

To that end, this commit introduces arbitrary randomized delays before performing resources writes into the `resourcetest.Client`. Its `PublishResources` method was already randomizing the order of resource writes. By default, no delay is added to normal writes and deletes but tests can opt-in via either passing hard coded options when creating the `resourcetest.Client` or using the `resourcetest.ConfigureTestCLIFlags` function to allow processing of CLI parameters.

In addition to allowing configurability of the request delay min and max, the client also has a configurable random number generator seed. When Using the CLI parameter helpers, a test log will be written noting the currently used settings. If the test fails then you can reproduce the same delays and order randomizations by providing the seed during the previous test failure.

# Conflicts:
#	internal/catalog/catalogtest/run_test.go
#	internal/catalog/catalogtest/test_integration_v2beta1.go
#	test/integration/consul-container/test/catalog/catalog_test.go

Co-authored-by: Matt Keeler <mjkeeler7@gmail.com>
2023-11-08 16:39:28 -05:00
.changelog Backport of CC-5545: side nav (#19573) 2023-11-08 10:33:57 -08:00
.github Backport of test: update makefile to include ways to trigger deployer integration tests into release/1.17.x (#19555) 2023-11-07 19:01:15 +00:00
.release OSS -> CE (community edition) changes (#18517) 2023-08-22 09:46:03 -05:00
acl Backport of acls,catalog,mesh: properly authorize workload selectors on writes into release/1.17.x (#19296) 2023-10-19 17:28:03 +00:00
agent Backport of Fix more test flakes into release/1.17.x (#19546) 2023-11-07 16:38:37 +00:00
api Backport `1.17.x` - build: dependency updates for 1.17.0 (#19455) 2023-11-03 11:44:34 -04:00
bench Gets benchmarks running again and does a rough pass for 0.7.1. 2016-11-29 13:02:26 -08:00
build-support Backport of build: ensure we pull through the hashicorp proxy instead of going directly to the docker hub into release/1.17.x (#19486) 2023-11-02 18:20:45 +00:00
command Backport of test: update certs for 10 year expiry into release/1.17.x (#19561) 2023-11-07 20:20:35 +00:00
connect [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
contributing Move contributing to docs 2021-08-30 16:17:09 -04:00
docs resource: allow for the ACLs.Read hook to request the entire data payload to perform the authz check (#18925) 2023-09-22 09:53:55 -05:00
envoyextensions Backport `1.17.x` - build: dependency updates for 1.17.0 (#19455) 2023-11-03 11:44:34 -04:00
grafana grafana: fix a query metrics from ent and add consul version (#18998) 2023-09-25 12:41:13 -04:00
internal Backport of Introduce randomized timings and reproducible randomization into controller integration tests. into release/1.17.x (#19575) 2023-11-08 16:39:28 -05:00
ipaddr [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
lib OSS -> CE (community edition) changes (#18517) 2023-08-22 09:46:03 -05:00
logging Remove old build tags (#19128) 2023-10-10 10:58:06 -04:00
proto Backport of NET-6294 - v1 Agentless proxycfg datasource errors after v2 changes into release/1.17.x (#19416) 2023-10-27 21:04:20 +00:00
proto-public Backport of [NET-6138] security: Bump google.golang.org/grpc to 1.56.3 (CVE-2023-44487) to release/1.17.x (#19417) 2023-10-30 08:45:42 -04:00
sdk Backport of [NET-5944] security: Update Go version to 1.20.10 and `x/net` to 0.17.0 into release/1.17.x (#19235) 2023-10-16 22:09:58 +00:00
sentinel Remove old build tags (#19128) 2023-10-10 10:58:06 -04:00
service_os Remove old build tags (#19128) 2023-10-10 10:58:06 -04:00
snapshot [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
test Backport of Introduce randomized timings and reproducible randomization into controller integration tests. into release/1.17.x (#19575) 2023-11-08 16:39:28 -05:00
test-integ Backport of test/deployer: add the method of deregistering services into release/1.17.x (#19568) 2023-11-07 22:52:46 +00:00
testing/deployer Backport of test/deployer: add the method of deregistering services into release/1.17.x (#19568) 2023-11-07 22:52:46 +00:00
testrpc [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
tlsutil Backport of test: update certs for 10 year expiry into release/1.17.x (#19561) 2023-11-07 20:20:35 +00:00
tools/internal-grpc-proxy [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
troubleshoot Backport `1.17.x` - build: dependency updates for 1.17.0 (#19455) 2023-11-03 11:44:34 -04:00
types [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
ui Backport of CC-5545: side nav (#19573) 2023-11-08 10:33:57 -08:00
version Backport `1.17.x` - build: dependency updates for 1.17.0 (#19455) 2023-11-03 11:44:34 -04:00
website Backport of Update Helm docs for consul-k8s 1.3.0 into release/1.17.x (#19582) 2023-11-08 19:44:08 +00:00
.copywrite.hcl Move ACL templated policies to hcl files (#18853) 2023-09-18 17:10:35 -04:00
.dockerignore Update the scripting 2018-06-14 21:42:47 -04:00
.gitignore add peering_commontopo tests [NET-3700] (#17951) 2023-07-18 16:41:30 -07:00
.golangci.yml dataplane: Allow getting bootstrap parameters when using V2 APIs (#18504) 2023-09-06 16:46:25 -06:00
CHANGELOG.md Backport `1.17.x` - build: dependency updates for 1.17.0 (#19455) 2023-11-03 11:44:34 -04:00
Dockerfile [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
Dockerfile-windows Envoy Integration Test Windows (#18007) 2023-07-21 20:26:00 +05:30
LICENSE [COMPLIANCE] License update (#18479) 2023-08-16 09:42:07 -05:00
Makefile Backport of test: update makefile to include ways to trigger deployer integration tests into release/1.17.x (#19555) 2023-11-07 19:01:15 +00:00
README.md README - re-order badges and update hub link (#18498) 2023-08-16 18:41:43 -07:00
buf.work.yaml [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
go.mod Backport `1.17.x` - build: dependency updates for 1.17.0 (#19455) 2023-11-03 11:44:34 -04:00
go.sum Backport of [NET-6138] security: Bump google.golang.org/grpc to 1.56.3 (CVE-2023-44487) to release/1.17.x (#19417) 2023-10-30 08:45:42 -04:00
main.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00

README.md

Consul logo Consul

License: BUSL-1.1 Docker Pulls Go Report Card

Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.

Consul provides several key features:

  • Multi-Datacenter - Consul is built to be datacenter aware, and can support any number of regions without complex configuration.

  • Service Mesh - Consul Service Mesh enables secure service-to-service communication with automatic TLS encryption and identity-based authorization. Applications can use sidecar proxies in a service mesh configuration to establish TLS connections for inbound and outbound connections with Transparent Proxy.

  • Service Discovery - Consul makes it simple for services to register themselves and to discover other services via a DNS or HTTP interface. External services such as SaaS providers can be registered as well.

  • Health Checking - Health Checking enables Consul to quickly alert operators about any issues in a cluster. The integration with service discovery prevents routing traffic to unhealthy hosts and enables service level circuit breakers.

  • Dynamic App Configuration - An HTTP API that allows users to store indexed objects within Consul, for storing configuration parameters and application metadata.

Consul runs on Linux, macOS, FreeBSD, Solaris, and Windows and includes an optional browser based UI. A commercial version called Consul Enterprise is also available.

Please note: We take Consul's security and our users' trust very seriously. If you believe you have found a security issue in Consul, please responsibly disclose by contacting us at security@hashicorp.com.

Quick Start

A few quick start guides are available on the Consul website:

Documentation

Full, comprehensive documentation is available on the Consul website: https://consul.io/docs

Contributing

Thank you for your interest in contributing! Please refer to CONTRIBUTING.md for guidance. For contributions specifically to the browser based UI, please refer to the UI's README.md for guidance.