Skip to content

Commit

Permalink
metrics: return histograms for time metrics
Browse files Browse the repository at this point in the history
create local type MetricsMap
implement receive_metric function for local types
add error management
iterate logarithmically (base 2) to produce prometheus bucket
  • Loading branch information
Keksoj committed Jul 3, 2024
1 parent c533a01 commit 7ed28fe
Show file tree
Hide file tree
Showing 7 changed files with 456 additions and 137 deletions.
17 changes: 16 additions & 1 deletion command/src/command.proto
Original file line number Diff line number Diff line change
Expand Up @@ -602,13 +602,15 @@ message BackendMetrics {
map<string, FilteredMetrics> metrics = 2;
}

// A metric, in a "filtered" format, which means: sendable to outside programs.
message FilteredMetrics {
oneof inner {
uint64 gauge = 1;
int64 count = 2;
uint64 time = 3;
Percentiles percentiles = 4;
FilteredTimeSerie time_serie = 5;
FilteredHistogram histogram = 6;
}
}

Expand All @@ -618,7 +620,6 @@ message FilteredTimeSerie {
repeated uint32 last_hour = 3;
}


message Percentiles {
required uint64 samples = 1;
required uint64 p_50 = 2;
Expand All @@ -631,6 +632,20 @@ message Percentiles {
required uint64 sum = 9;
}

// a histogram meant to be translated to prometheus
message FilteredHistogram {
required uint64 sum = 1;
required uint64 count = 2;
repeated Bucket buckets = 3;
}

// a prometheus histogram bucket
message Bucket {
required uint64 count = 1;
// upper range of the bucket (le = less or equal)
required uint64 le = 2;
}

message RequestCounts {
map<string, int32> map = 1;
}
Expand Down
34 changes: 34 additions & 0 deletions command/src/proto/display.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ use crate::{
AsString,
};

use super::command::FilteredHistogram;

impl Display for CertificateAndKey {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
let versions = self.versions.iter().fold(String::new(), |acc, tls_v| {
Expand Down Expand Up @@ -252,6 +254,7 @@ fn print_proxy_metrics(proxy_metrics: &BTreeMap<String, FilteredMetrics>) {
let filtered = filter_metrics(proxy_metrics);
print_gauges_and_counts(&filtered);
print_percentiles(&filtered);
print_histograms(&filtered);
}

fn print_worker_metrics(worker_metrics: &WorkerMetrics) -> Result<(), DisplayError> {
Expand Down Expand Up @@ -392,6 +395,37 @@ fn print_percentiles(filtered_metrics: &BTreeMap<String, FilteredMetrics>) {
percentile_table.printstd();
}

fn print_histograms(filtered_metrics: &BTreeMap<String, FilteredMetrics>) {
let histograms: BTreeMap<String, FilteredHistogram> = filtered_metrics
.iter()
.filter_map(|(name, metric)| match metric.inner.clone() {
Some(filtered_metrics::Inner::Histogram(hist)) => Some((name.to_owned(), hist)),
_ => None,
})
.collect();

for (name, histogram) in histograms {
print_histogram(&name, &histogram);
}
}

fn print_histogram(metric_name: &str, hist: &FilteredHistogram) {
println!("{}", metric_name);
let mut first_row = Row::new(vec![cell!("sum"), cell!("count")]);
let mut value_row = Row::new(vec![cell!(hist.sum), cell!(hist.count)]);

for bucket in &hist.buckets {
first_row.add_cell(cell!(bucket.le));
value_row.add_cell(cell!(bucket.count));
}

let mut table = Table::new();
table.set_format(*prettytable::format::consts::FORMAT_BOX_CHARS);
table.add_row(first_row);
table.add_row(value_row);
table.printstd();
}

fn print_available_metrics(available_metrics: &AvailableMetrics) -> Result<(), DisplayError> {
println!("Available metrics on the proxy level:");
for metric_name in &available_metrics.proxy_metrics {
Expand Down
58 changes: 58 additions & 0 deletions lib/assets/tests/ensc-lille_fr.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
-----BEGIN CERTIFICATE-----
MIIE6zCCA9OgAwIBAgISBCv2oVy5P+1VmBnfQCLzu5cdMA0GCSqGSIb3DQEBCwUA
MDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD
EwNSMTEwHhcNMjQwNjE4MTUxMTI5WhcNMjQwOTE2MTUxMTI4WjAYMRYwFAYDVQQD
Ew1lbnNjLWxpbGxlLmZyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
gc+FeOmjukLu+I27xHa4O5XlyIkrLW0fdq6c6NmSHzDw1kcAHnvylbyQVuWJLxze
n3yqU/vvNl5A9iWtG8AVIvp5x2aalG/kKRkXI/wHhuWLUV91yQ4H9N/qOj96ru4c
Bilobl/F12gnvz7miciGaI+E7YllsMKCxpa5XiIZSLWcQHdUndQZby4Byw3EgOXF
51KWLIz4GJibtkNaxfg56D7OCvHdmgUb4Qqnj/OMhL8dt5P7Uu7Z2deeUvjY1Bw3
b0ZExww/Tq1rLEE/WwwnUygOHumvwgupNR69ycB2Gnw7t3EKvW2ckyVQEgW7bacG
zgifX4fdreIMXnyvZI7N+QIDAQABo4ICEjCCAg4wDgYDVR0PAQH/BAQDAgWgMB0G
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1Ud
DgQWBBTIzq7XFzB7qMEbjfKZlz/9u/0YRTAfBgNVHSMEGDAWgBTFz0ak6vTDwHps
lcQtsF6SLybjuTBXBggrBgEFBQcBAQRLMEkwIgYIKwYBBQUHMAGGFmh0dHA6Ly9y
MTEuby5sZW5jci5vcmcwIwYIKwYBBQUHMAKGF2h0dHA6Ly9yMTEuaS5sZW5jci5v
cmcvMBgGA1UdEQQRMA+CDWVuc2MtbGlsbGUuZnIwEwYDVR0gBAwwCjAIBgZngQwB
AgEwggEFBgorBgEEAdZ5AgQCBIH2BIHzAPEAdgBIsONr2qZHNA/lagL6nTDrHFIB
y1bdLIHZu7+rOdiEcwAAAZAsHh8/AAAEAwBHMEUCIDCqNJx4fgz8Zd9h90v5DcHx
UpE3/dNqM3x5wBCJYjcgAiEAgHVHyEybFabd9SSEWEDosThwOC5wNLh19jj2e7R0
bS0AdwA/F0tP1yJHWJQdZRyEvg0S7ZA3fx+FauvBvyiF7PhkbgAAAZAsHh9DAAAE
AwBIMEYCIQDA1IKa3gYcgXrt3JFPLIoKgXY23wPO0xl5CPUKvb7zhwIhALNWBg/5
vY/NsrELR4+Hp13XVqO5BQ59XFSODOz4baBWMA0GCSqGSIb3DQEBCwUAA4IBAQAp
3VIsu2VLLB/+3uclh/L65tUdequLFdOkDe9EUPUkBmKMtdc+TAJ71xZS7juXO5DQ
gKrERPDIIts+4h9x2vaUY63A+nf+AAP8z2opu6P3EPgnDGynPYjhSLc2KMx+0PzI
DHfHZ4aUXV2BPxO7cKDpXLPcaez2YOTNa8Zhci1x6uKIoXJBx7KgDJ8D1PzYserP
Q9W50NZ6OcYVi/V6VVdTaie/6MtN2vQeDmdpKZoNdV2ru9NoEb86nW3ufYT/g5sl
dKwGA+fqj+tbE3rWqOKu/EDg0SgK7DSYlQzipdqeI3ubkq0Di5anlm6+mMLrAFui
lVeE5KB0LYhn+OBzqeVk
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFBjCCAu6gAwIBAgIRAIp9PhPWLzDvI4a9KQdrNPgwDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
WhcNMjcwMzEyMjM1OTU5WjAzMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDEMMAoGA1UEAxMDUjExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAuoe8XBsAOcvKCs3UZxD5ATylTqVhyybKUvsVAbe5KPUoHu0nsyQYOWcJ
DAjs4DqwO3cOvfPlOVRBDE6uQdaZdN5R2+97/1i9qLcT9t4x1fJyyXJqC4N0lZxG
AGQUmfOx2SLZzaiSqhwmej/+71gFewiVgdtxD4774zEJuwm+UE1fj5F2PVqdnoPy
6cRms+EGZkNIGIBloDcYmpuEMpexsr3E+BUAnSeI++JjF5ZsmydnS8TbKF5pwnnw
SVzgJFDhxLyhBax7QG0AtMJBP6dYuC/FXJuluwme8f7rsIU5/agK70XEeOtlKsLP
Xzze41xNG/cLJyuqC0J3U095ah2H2QIDAQABo4H4MIH1MA4GA1UdDwEB/wQEAwIB
hjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwEgYDVR0TAQH/BAgwBgEB
/wIBADAdBgNVHQ4EFgQUxc9GpOr0w8B6bJXELbBeki8m47kwHwYDVR0jBBgwFoAU
ebRZ5nu25eQBc4AIiMgaWPbpm24wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAC
hhZodHRwOi8veDEuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcG
A1UdHwQgMB4wHKAaoBiGFmh0dHA6Ly94MS5jLmxlbmNyLm9yZy8wDQYJKoZIhvcN
AQELBQADggIBAE7iiV0KAxyQOND1H/lxXPjDj7I3iHpvsCUf7b632IYGjukJhM1y
v4Hz/MrPU0jtvfZpQtSlET41yBOykh0FX+ou1Nj4ScOt9ZmWnO8m2OG0JAtIIE38
01S0qcYhyOE2G/93ZCkXufBL713qzXnQv5C/viOykNpKqUgxdKlEC+Hi9i2DcaR1
e9KUwQUZRhy5j/PEdEglKg3l9dtD4tuTm7kZtB8v32oOjzHTYw+7KdzdZiw/sBtn
UfhBPORNuay4pJxmY/WrhSMdzFO2q3Gu3MUBcdo27goYKjL9CTF8j/Zz55yctUoV
aneCWs/ajUX+HypkBTA+c8LGDLnWO2NKq0YD/pnARkAnYGPfUDoHR9gVSp/qRx+Z
WghiDLZsMwhN1zjtSC0uBWiugF3vTNzYIEFfaPG7Ws3jDrAMMYebQ95JQ+HIBD/R
PBuHRTBpqKlyDnkSHDHYPiNX3adPoPAcgdF3H2/W0rmoswMWgTlLn1Wu0mrks7/q
pdWfS6PJ1jty80r2VKsM/Dj3YIDfbjXKdaFU5C+8bhfJGqU3taKauuz0wHVGT3eo
6FlWkWYtbt4pgdamlwVeZEW+LM7qZEJEsMNPrfC03APKmZsJgpWCDWOKZvkZcvjV
uYkQ4omYCTX5ohy+knMjdOmdH9c7SpqEWBDC86fiNex+O0XOMEZSa8DA
-----END CERTIFICATE-----
27 changes: 27 additions & 0 deletions lib/assets/tests/ensc-lille_fr.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAgc+FeOmjukLu+I27xHa4O5XlyIkrLW0fdq6c6NmSHzDw1kcA
HnvylbyQVuWJLxzen3yqU/vvNl5A9iWtG8AVIvp5x2aalG/kKRkXI/wHhuWLUV91
yQ4H9N/qOj96ru4cBilobl/F12gnvz7miciGaI+E7YllsMKCxpa5XiIZSLWcQHdU
ndQZby4Byw3EgOXF51KWLIz4GJibtkNaxfg56D7OCvHdmgUb4Qqnj/OMhL8dt5P7
Uu7Z2deeUvjY1Bw3b0ZExww/Tq1rLEE/WwwnUygOHumvwgupNR69ycB2Gnw7t3EK
vW2ckyVQEgW7bacGzgifX4fdreIMXnyvZI7N+QIDAQABAoIBAHrew/bEJ+65RltM
RQvcV9xGsV6Uv6La5GpBM1KQBmixuXUJdYplRiQHfRRTZfuLNwn9RXgDQtTSeGjF
FsrqkNcwAS8F5pFUK8He9vFfsHw2MB3Q3rt1JYDapWmHBogn56zJawj2bFzNQLoc
Prjybo7wMiFo6TFbm89/gWwhmI8hxh7q7BVbvbxrLxF1aiMV2U8oq3s71BPIaunb
3nKsqRCI3cx5ipWZjOTWa1poR3kjMXaJqGViptUatuskpAbJ7Wl0hzPoj7GuUhgw
aphHSuHNxZ7LSgNIltmN2ursC6QXiqP+ZaddDFQoXB0ZwF99eUv8HfuYD8lLExn6
ujlDWlECgYEAw0GWuUeBUy+xThiWhYDNBmgnIjpcaXpnggtmeXPT5cBAgB311uDP
xTtExUqUF6nF8hlrsu/Tuq0RdjiawD0cW8QL1dKXGT9HizjxJtZco+RXb+pALkh6
XWj4e/rCft3TG7XMdiaI+xnuf7M95vkL7Hk1zKZDbcKmWABHzBIyRO0CgYEAqjHH
D8l+7EOE9S3aIYD6UboeF3n4NDE7qHA0cjuCiHioI4mfCke8f6EqiFCfyC23vsPv
FLoravHR59lH6vDuf/G5HcYtFmblIo0kh5flgADJYcQP0a6DK1wk6wONNLa/ifor
Rgcgs8Zw3XI/V1MgH8CKXUI2SfAqVUTbLIHPN70CgYAn31HvHfn7ycZ0QzMhqg60
Gzq6k55hb7yJYtiXPp7r0NmbEAMu0RO8nADMJRGez217pdNHZBAhk8v4D1ESpqgO
2TbtgCaY4kIy3PrpymZ6lVuBoB1hFi3eu1vavXdQPu4oP3S0P+RDGqWIcErYysyz
ioEA/IbSeChN2ijPNHwNdQKBgQCovtAC3CKm+M8UFVFIlMwcSi/Z0QoCHapr+ExX
0p861n7HNYVluPixhsdX/rBd1s5vK2+aGnhAAeHAQhPnYtjmLHIBjmNX6c9YMZ89
faKEBsOk1rNkj+XoEOVdytivol5I3K0ZMqn+9UsklUkuOPIJ6WqGysZvCtu+TZYO
C+q79QKBgDmcRCBzJ9a+l458cr+Ddjni6y3+Pm1e9/0N88VgR8gomaN+srbrlPVj
M2xGs0fDax8LQCC3UQxKkwP6u9O5GPFKIWUVZ7liIMIdI+RVOn0wkM4UllWnjZlV
IZIc+d73XYAvgt/gLsCsnAoqkVA/TQi9Yaew7sB4nG094Ai7KRzW
-----END RSA PRIVATE KEY-----
113 changes: 113 additions & 0 deletions lib/assets/tests/www_ensc-lille_fr.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
-----BEGIN CERTIFICATE-----
MIIHZzCCBU+gAwIBAgIQOiGkjJyRD/UtLhn8/zcpIzANBgkqhkiG9w0BAQwFADBE
MQswCQYDVQQGEwJOTDEZMBcGA1UEChMQR0VBTlQgVmVyZW5pZ2luZzEaMBgGA1UE
AxMRR0VBTlQgT1YgUlNBIENBIDQwHhcNMjMwODI5MDAwMDAwWhcNMjQwODI4MjM1
OTU5WjBlMQswCQYDVQQGEwJGUjEYMBYGA1UECBMPSGF1dHMtZGUtRnJhbmNlMSAw
HgYDVQQKExdDRU5UUkFMRSBMSUxMRSBJTlNUSVRVVDEaMBgGA1UEAxMRd3d3LmVu
c2MtbGlsbGUuZnIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzmnlK
gH8FxqzwC7N2WpB4RSHVfej0dPmi0gSbR8sUWLfUmKUXBdEadu66AACODYPjUVpg
V5s2c1cofPM/YehFAjSqihVOMRafxcdDebFUHsWpm8ZRy+zZlnSzOgxnYFlDIGg2
yVRta4a2Kx+jRD3gJG4eiF3R57kRWg1CndODOtNdKjmvcvfomh5q6WWDpk9Q3OqT
quMX9Vr37TopB0nFEuHMEWuVBiMyZnLBzfofCT8Jo+LruKvEki5oWkL924ar41+0
fy9R0/oCLExAunUkjisXRrcOW3beuKsCliz292H0VbQXVALgVqFO3U5S+pmZFK3P
ioDOsz21m84oJ3FBAgMBAAGjggMyMIIDLjAfBgNVHSMEGDAWgBRvHTVJEGwy+lmg
nryK6B+VvnF6DDAdBgNVHQ4EFgQUbcKtIL/YXfEZdEsh08qEdJ6meRUwDgYDVR0P
AQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsG
AQUFBwMCMEkGA1UdIARCMEAwNAYLKwYBBAGyMQECAk8wJTAjBggrBgEFBQcCARYX
aHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwCAYGZ4EMAQICMD8GA1UdHwQ4MDYwNKAy
oDCGLmh0dHA6Ly9HRUFOVC5jcmwuc2VjdGlnby5jb20vR0VBTlRPVlJTQUNBNC5j
cmwwdQYIKwYBBQUHAQEEaTBnMDoGCCsGAQUFBzAChi5odHRwOi8vR0VBTlQuY3J0
LnNlY3RpZ28uY29tL0dFQU5UT1ZSU0FDQTQuY3J0MCkGCCsGAQUFBzABhh1odHRw
Oi8vR0VBTlQub2NzcC5zZWN0aWdvLmNvbTArBgNVHREEJDAighF3d3cuZW5zYy1s
aWxsZS5mcoINZW5zYy1saWxsZS5mcjCCAX0GCisGAQQB1nkCBAIEggFtBIIBaQFn
AHYAdv+IPwq2+5VRwmHM9Ye6NLSkzbsp3GhCCp/mZ0xaOnQAAAGKP/0ZJAAABAMA
RzBFAiBYeU0rnjIakDl5HBoYFZs/8wQJff58c15Bfi7ADB/TSAIhAOuKZfslUqbd
W6w75ZAUoosHLSsC8vtvF5CQRpEmsdgCAHYA2ra/az+1tiKfm8K7XGvocJFxbLtR
hIU0vaQ9MEjX+6sAAAGKP/0ZeQAABAMARzBFAiEA2rLLno3ahdDScy9ebIlyM4kQ
rtS7MIluP1q2UkpG3zoCIE1KMUjR6TIj29+mXAPg2P/+v4dsmy6ey2EL/KB0bDl6
AHUA7s3QZNXbGs7FXLedtM0TojKHRny87N7DUUhZRnEftZsAAAGKP/0ZlgAABAMA
RjBEAiB5/ASjl8YcUWWBFTr3SBBKiTwyom9l7y3vrFw7obGKXgIgSVfO4aSmh/Ic
Wp6JHEkSYlhiJYUS1odcKGdPtHoaCAowDQYJKoZIhvcNAQEMBQADggIBAJYJ777y
9laWV6lRwNl4PmtgFGnwV0FOLoqZYqrCXoi2VR80wQu9h9MLw387zFfs9Xo7FoCS
ihgGKZ2qyD+1iAOxYGOuXX+foP5UwRvB6qQpPidgS+3twDt4AMBsuqZ11oYBjpkn
0KByrNGU4xLj4a7QCdF72hamLz5CDMlKGnslBjBCE/gHEye8Z6kCQsvd2edKje0Q
fH/3fjr1iVHvur7XI5zM6g6t5F+oe5kWkEJ0J2qszRuHRXZdkAsGf6aIh8PHpf5X
Svtp/QG8HcdwEmctV5ie+pQdNvFQnBeAjEI46QUtDZrUZPbDRLffh+E4HTRjWfOf
eaoCQeBHAbwQgdwFp5Fiv4qyWYRWzTqFFGZyO5ROWMwlfsdsiI7dIfDDQt/VSxIT
iwZRK6tGKpPmkDm6TXQ9ZVGZqCTLcPVw59nlWBDwa0lQDwUwqlWwRBNLh5lK24Uj
evtPxI8JaDiIIw8geZ6HkxEPYi8+A+x5kp2p+nXYO804k9DVZrZ4PJDS7XneF06H
Jhmu/L1DhmYZQuLiDbDGtGxZ1lxh2PSNaeA4FV5gNzwvzQvDAoll/D6iygWAVQ3Y
xUWH5N02hZglHXBGUo0RF7SPsypjNMuyhE2OVxVO7ZeW0nVc0sTlxpZyJ9GcYf5o
jjIUll5+hj/5A+TaOaiXzwg/1mnXY/kAukz9
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIG5TCCBM2gAwIBAgIRANpDvROb0li7TdYcrMTz2+AwDQYJKoZIhvcNAQEMBQAw
gYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtK
ZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYD
VQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTIw
MDIxODAwMDAwMFoXDTMzMDUwMTIzNTk1OVowRDELMAkGA1UEBhMCTkwxGTAXBgNV
BAoTEEdFQU5UIFZlcmVuaWdpbmcxGjAYBgNVBAMTEUdFQU5UIE9WIFJTQSBDQSA0
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEApYhi1aEiPsg9ZKRMAw9Q
r8Mthsr6R20VSfFeh7TgwtLQi6RSRLOh4or4EMG/1th8lijv7xnBMVZkTysFiPmT
PiLOfvz+QwO1NwjvgY+Jrs7fSoVA/TQkXzcxu4Tl3WHi+qJmKLJVu/JOuHud6mOp
LWkIbhODSzOxANJ24IGPx9h4OXDyy6/342eE6UPXCtJ8AzeumTG6Dfv5KVx24lCF
TGUzHUB+j+g0lSKg/Sf1OzgCajJV9enmZ/84ydh48wPp6vbWf1H0O3Rd3LhpMSVn
TqFTLKZSbQeLcx/l9DOKZfBCC9ghWxsgTqW9gQ7v3T3aIfSaVC9rnwVxO0VjmDdP
FNbdoxnh0zYwf45nV1QQgpRwZJ93yWedhp4ch1a6Ajwqs+wv4mZzmBSjovtV0mKw
d+CQbSToalEUP4QeJq4Udz5WNmNMI4OYP6cgrnlJ50aa0DZPlJqrKQPGL69KQQz1
2WgxvhCuVU70y6ZWAPopBa1ykbsttpLxADZre5cH573lIuLHdjx7NjpYIXRx2+QJ
URnX2qx37eZIxYXz8ggM+wXH6RDbU3V2o5DP67hXPHSAbA+p0orjAocpk2osxHKo
NSE3LCjNx8WVdxnXvuQ28tKdaK69knfm3bB7xpdfsNNTPH9ElcjscWZxpeZ5Iij8
lyrCG1z0vSWtSBsgSnUyG/sCAwEAAaOCAYswggGHMB8GA1UdIwQYMBaAFFN5v1qq
K0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBRvHTVJEGwy+lmgnryK6B+VvnF6DDAO
BgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggr
BgEFBQcDAQYIKwYBBQUHAwIwOAYDVR0gBDEwLzAtBgRVHSAAMCUwIwYIKwYBBQUH
AgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFAGA1UdHwRJMEcwRaBDoEGGP2h0
dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9u
QXV0aG9yaXR5LmNybDB2BggrBgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6
Ly9jcnQudXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAl
BggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0B
AQwFAAOCAgEAUtlC3e0xj/1BMfPhdQhUXeLjb0xp8UE28kzWE5xDzGKbfGgnrT2R
lw5gLIx+/cNVrad//+MrpTppMlxq59AsXYZW3xRasrvkjGfNR3vt/1RAl8iI31lG
hIg6dfIX5N4esLkrQeN8HiyHKH6khm4966IkVVtnxz5CgUPqEYn4eQ+4eeESrWBh
AqXaiv7HRvpsdwLYekAhnrlGpioZ/CJIT2PTTxf+GHM6cuUnNqdUzfvrQgA8kt1/
ASXx2od/M+c8nlJqrGz29lrJveJOSEMX0c/ts02WhsfMhkYa6XujUZLmvR1Eq08r
48/EZ4l+t5L4wt0DV8VaPbsEBF1EOFpz/YS2H6mSwcFaNJbnYqqJHIvm3PLJHkFm
EoLXRVrQXdCT+3wgBfgU6heCV5CYBz/YkrdWES7tiiT8sVUDqXmVlTsbiRNiyLs2
bmEWWFUl76jViIJog5fongEqN3jLIGTG/mXrJT1UyymIcobnIGrbwwRVz/mpFQo0
vBYIi1k2ThVh0Dx88BbF9YiP84dd8Fkn5wbE6FxXYJ287qfRTgmhePecPc73Yrzt
apdRcsKVGkOpaTIJP/l+lAHRLZxk/dUtyN95G++bOSQqnOCpVPabUGl2E/OEyFrp
Ipwgu2L/WJclvd6g+ZA/iWkLSMcpnFb+uX6QBqvD6+RNxul1FaB5iHY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI
s9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG
vDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ
Ijy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb
IWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0
tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E
xwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV
icQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5
D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ
WBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ
5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG
KAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg
EQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID
ZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG
BgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t
L0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr
BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA
A4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+
rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+
/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA
CiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F
zZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA
vGp4z7h/jnZymQyd/teRCBaho1+V
-----END CERTIFICATE-----
27 changes: 27 additions & 0 deletions lib/assets/tests/www_ensc-lille_fr.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAs5p5SoB/Bcas8AuzdlqQeEUh1X3o9HT5otIEm0fLFFi31Jil
FwXRGnbuugAAjg2D41FaYFebNnNXKHzzP2HoRQI0qooVTjEWn8XHQ3mxVB7FqZvG
Ucvs2ZZ0szoMZ2BZQyBoNslUbWuGtisfo0Q94CRuHohd0ee5EVoNQp3TgzrTXSo5
r3L36Joeaullg6ZPUNzqk6rjF/Va9+06KQdJxRLhzBFrlQYjMmZywc36Hwk/CaPi
67irxJIuaFpC/duGq+NftH8vUdP6AixMQLp1JI4rF0a3Dlt23rirApYs9vdh9FW0
F1QC4FahTt1OUvqZmRStz4qAzrM9tZvOKCdxQQIDAQABAoIBADTCiCbuoGHd/yd1
CH8YE6CBDnNczXYidsLx1xCWgn2zoiz9umGM/+Q6U96n6YHRTpEUcOwkUCAqucvX
CM3xwP2krDv83E1f9jlxLBwSP5lqgL5WWGfm8+jnXdjYkJQ9pXsmpfaSJg8Oq0AQ
YvbfMR4LFZ46iPUEkUUboxGSs3O08aUmlP/O8eyfqJZogJKIzYCaQK4a3j6homXF
2sPwUDRIKgAcYW2ZZm45xzxl2yyXjX/5VKVkH3Y9bdaUNIJog48sGuYyx8Gni17w
0ihGmQOTTVJJmJi8h3xRtxWY/4Jx8hd2YyObqhYQpy+Kt3kioIssNGK9YPprC95y
gLlgUAECgYEA6zYoPbFcA/3sBKR4O465JagGjJVyGX7YwNEKDlsM5B4WOPPrjyQV
6LRbNFC4NJnfptj1EN/R0AzyXONfuGVhyVG1rMKBQVP6jS1s9ZHZTyLHA0o5YSIr
3svNwEK+xQ9nVVZwqsgRwWSc/wxLcxf0VrsJfBcvcSpxz7Jaf+3OpSECgYEAw3oj
ux9+RsqV/WXV+JwinhJ5e0ur4mrkUHB/fLweZ4GJa9UjO/74Jz4pK4fV5Z0q8xjR
A1EXP8m//zV8me68JZt/2VE7SLoK0wcdeBJHu8JRpf99a5fCcln2ae8gJ3JQbYJI
dzmuDEVh6Hegmldz6kiEynDK7AHr7JVVoojXKCECgYEAnZiY19UpKQeOhwHICWe0
iBWP5cwQOiLyiibFzR6WgZXjH9/XGf58q4GEhoX7FktvPfSqJtdAVl0GWtSCAyPy
pBgaWRmtzx68hrFECzng15QesgaecYWazVnSjxpphdGvU89qCBOrSd/nDUCooQIQ
1bfWQA2s3O8qeJYw6vxkc+ECgYEAkMoEc1MFdqwR4yquDcKgxZMLlm7bdw8T5B0f
4SV6I9LIFi4+Ne9Koc6iMhMgNT5wFLY6AwnqfZ4Tb5aPn3k8tWJzlWVc0yayY9Lu
WgS4S3PIhHs0zCARsB/ArICpwW4j8qlAwcbgi0hNGCKbvBawzkU+zrAzLhLSTF/k
mUpgi+ECgYEAxUCx11kxORg+v9KTrJjw/6opoSh5ZqVwtaMtMGFX6zQV2s7jlMvJ
FMz4hBtq60l4w4Z5HkbPC3wRomjWxbLrpNtWqa5hL3n6H2isa4BJdsFsDi33MFlq
od0KpJ0lPe5nvmPhjB0qVAbnfXxzath8rbSffhnnMuHHtlvsFDR5eJM=
-----END RSA PRIVATE KEY-----
Loading

0 comments on commit 7ed28fe

Please sign in to comment.