diff --git a/Testing/Dashboard/CMakeLists.txt b/Testing/Dashboard/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..85e1fb47a084569b852c7ccdae81b32b6efd4347 --- /dev/null +++ b/Testing/Dashboard/CMakeLists.txt @@ -0,0 +1,53 @@ +# --------------------------------------------------------------------- +# Settings +mark_as_advanced( ELASTIX_DASHBOARD_HOST ) +set( ELASTIX_DASHBOARD_HOST "elastix" ) + +mark_as_advanced( ELASTIX_DASHBOARD_ELASTICSEARCH_PORT ) +set( ELASTIX_DASHBOARD_ELASTICSEARCH_PORT 9200 ) + +mark_as_advanced( ELASTIX_DASHBOARD_LOGSTASH_PORT ) +set( ELASTIX_DASHBOARD_LOGSTASH_PORT 5043 ) + +mark_as_advanced( ELASTIX_DASHBOARD_KIBANA_PORT ) +set( ELASTIX_DASHBOARD_KIBANA_PORT 5601 ) + +mark_as_advanced( ELASTIX_DASHBOARD_SOURCE_DIR ) +set( ELASTIX_DASHBOARD_SOURCE_DIR "${CMAKE_SOURCE_DIR}/Testing/Dashboard" ) + +mark_as_advanced( ELASTIX_DASHBOARD_BINARY_DIR ) +set( ELASTIX_DASHBOARD_BINARY_DIR "${CMAKE_BINARY_DIR}/Testing/Dashboard" ) + +mark_as_advanced( ELASTIX_DASHBOARD_LOGSTASH_CERTIFICATE ) +set( ELASTIX_DASHBOARD_LOGSTASH_CERTIFICATE "elxLogstashForwarder.crt" ) + +mark_as_advanced( ELASTIX_DASHBOARD_LOGSTASH_RSA_PRIVATE_KEY ) +set( ELASTIX_DASHBOARD_LOGSTASH_RSA_PRIVATE_KEY "elxLogstashForwarder.key" ) + +mark_as_advanced( ELASTIX_DASHBOARD_VOLUME ) +set( ELASTIX_DASHBOARD_VOLUME "${ELASTIX_DASHBOARD_BINARY_DIR}/Data" ) + +if( NOT EXISTS "${ELASTIX_DASHBOARD_VOLUME}" ) + message( STATUS + "ELASTIX_DASHBOARD_VOLUME points to the default ${CMAKE_BINARY_DIR}/Testing/Dashboard/Data path in your build directory. Point to another directory on your local machine to ensure dashboard state is saved between builds." + ) + + file( MAKE_DIRECTORY "${ELASTIX_DASHBOARD_VOLUME}" ) +endif() + +# --------------------------------------------------------------------- +# Configure +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/docker-compose.yml.in + ${ELASTIX_DASHBOARD_BINARY_DIR}/docker-compose.yml +) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/elxLogstash.conf.in + ${ELASTIX_DASHBOARD_BINARY_DIR}/elxLogstash/elxLogstash.conf +) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/elxLogstashForwarder.conf.in + ${ELASTIX_DASHBOARD_BINARY_DIR}/elxLogstashForwarder.conf +) \ No newline at end of file diff --git a/Testing/Dashboard/docker-compose.yml.in b/Testing/Dashboard/docker-compose.yml.in new file mode 100644 index 0000000000000000000000000000000000000000..6faad275504d0b5fb4cdcf708d106f40254be8d9 --- /dev/null +++ b/Testing/Dashboard/docker-compose.yml.in @@ -0,0 +1,17 @@ +elastix: + image: willdurand/elk + ports: + - "80:80" + - "@ELASTIX_DASHBOARD_LOGSTASH_PORT@:@ELASTIX_DASHBOARD_LOGSTASH_PORT@" + volumes_from: + - data + +data: + image: busybox + volumes: + - @ELASTIX_DASHBOARD_SOURCE_DIR@:/etc/ssl + - @ELASTIX_DASHBOARD_VOLUME@:/data + - @ELASTIX_DASHBOARD_BINARY_DIR@/elxLogstash:/etc/logstash + + + \ No newline at end of file diff --git a/Testing/Dashboard/elxLogstash.conf.in b/Testing/Dashboard/elxLogstash.conf.in new file mode 100644 index 0000000000000000000000000000000000000000..454a843007c028b8d2d62c1eb5a08264289ab53e --- /dev/null +++ b/Testing/Dashboard/elxLogstash.conf.in @@ -0,0 +1,20 @@ +input { + lumberjack { + port => @ELASTIX_DASHBOARD_LOGSTASH_PORT@ + ssl_certificate => "/etc/ssl/@ELASTIX_DASHBOARD_LOGSTASH_CERTIFICATE@" + ssl_key => "/etc/ssl/@ELASTIX_DASHBOARD_LOGSTASH_RSA_PRIVATE_KEY@" + } +} + +filter { + xml { + source => message + target => result + } +} + +output { + elasticsearch { + protocol => http + } +} \ No newline at end of file diff --git a/Testing/Dashboard/elxLogstashForwarder.conf.in b/Testing/Dashboard/elxLogstashForwarder.conf.in new file mode 100644 index 0000000000000000000000000000000000000000..923c158e35a2f8666a5316bc81446d4bd429365b --- /dev/null +++ b/Testing/Dashboard/elxLogstashForwarder.conf.in @@ -0,0 +1,20 @@ +{ + "network": { + "servers": [ "@ELASTIX_DASHBOARD_HOST@:@ELASTIX_DASHBOARD_LOGSTASH_PORT@" ], + "timeout": 15, + "ssl certificate": "@ELASTIX_DASHBOARD_SOURCE_DIR@/@ELASTIX_DASHBOARD_LOGSTASH_CERTIFICATE@", + "ssl key": "@ELASTIX_DASHBOARD_SOURCE_DIR@/@ELASTIX_DASHBOARD_LOGSTASH_RSA_PRIVATE_KEY@", + "ssl ca": "@ELASTIX_DASHBOARD_SOURCE_DIR@/@ELASTIX_DASHBOARD_LOGSTASH_CERTIFICATE@" + }, + "files": [ + { + "paths": [ + "@CMAKE_BINARY_DIR@/Testing/Unit/*.xml" + ], + "fields": { + "type": "unittest", + "lib": "elastix" + } + } + ] +} diff --git a/Testing/Dashboard/elxLogstashForwarder.crt b/Testing/Dashboard/elxLogstashForwarder.crt new file mode 100644 index 0000000000000000000000000000000000000000..56ef6e0dcf697be1be407db7ca75cf31112821d0 --- /dev/null +++ b/Testing/Dashboard/elxLogstashForwarder.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDGjCCAgKgAwIBAgIJAMF8GSVtnyB6MA0GCSqGSIb3DQEBBQUAMBIxEDAOBgNV +BAMTB2VsYXN0aXgwHhcNMTUwODEyMTQxNjE1WhcNMTUwOTExMTQxNjE1WjASMRAw +DgYDVQQDEwdlbGFzdGl4MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +01P404f+W/aBLxlQTFyHy1o7m07edUmFIjJuN9JjGTzZtlhAEc7dXJ8fUwr/hnLq +HUeaGRbNcpFDj+/Xq2W9jH7/VyxivA8Ib7ycLNxywgmheZVxXetPIeYmK+Rqovyd +GhMcU0WMv/3OslFjf92PLegFgRYbmJa7rEH+I0MD1hE1rn1AIJeU4nVCUrtQON6g +icDEZSNwVSuLfdiuHCMcAVWx+pQIyHji6EoyIBjNsF8LoBZoMY5N+qRph8tt9k1N +GemQoaZWd926jWgrsSSrAfgtMxw43TXwCFe8RiL8L+pZlN4xxYjQj1/PtTowqjzL +dYqWAT0o5zwlqkrNgjTuYwIDAQABo3MwcTAdBgNVHQ4EFgQU8onFqrecR/J81ZFi +gonexjVf8yAwQgYDVR0jBDswOYAU8onFqrecR/J81ZFigonexjVf8yChFqQUMBIx +EDAOBgNVBAMTB2VsYXN0aXiCCQDBfBklbZ8gejAMBgNVHRMEBTADAQH/MA0GCSqG +SIb3DQEBBQUAA4IBAQCYalhVZpN/F/Cux/KRBuOyyVxD+tOM7PDlXuuGMcxZ8PTH +sYK3MLBUvGnn90R6YIF+pmZC40hkau12xGRnlyNLa0EpnAd77SGlaB/y9Ix6RCDd +PRvdEZodknXzS5sDw+A9pA0JtZANrAXHrELPXjfp5vdf4EUH/o7TTh3XzTEIokwp +VY6557E17BYsTHHebWPSiDzCeS9y6PtdiZczuHrd7+K+vWgVcgmQ0fdudWwcMOEC +8s6O8uQGrc1v9nSyT93C9MPCWnuZ2McFX4JPSwaqAaKCTcnc8GAcqk4O5ruQ/8u/ +xSNQsoYpFi2BawOdPDqyMKn4khkREWTq0+T+7Kq2 +-----END CERTIFICATE----- diff --git a/Testing/Dashboard/elxLogstashForwarder.key b/Testing/Dashboard/elxLogstashForwarder.key new file mode 100644 index 0000000000000000000000000000000000000000..9537cddd201e50e6d661444da8e85c5294b617c3 --- /dev/null +++ b/Testing/Dashboard/elxLogstashForwarder.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEA01P404f+W/aBLxlQTFyHy1o7m07edUmFIjJuN9JjGTzZtlhA +Ec7dXJ8fUwr/hnLqHUeaGRbNcpFDj+/Xq2W9jH7/VyxivA8Ib7ycLNxywgmheZVx +XetPIeYmK+RqovydGhMcU0WMv/3OslFjf92PLegFgRYbmJa7rEH+I0MD1hE1rn1A +IJeU4nVCUrtQON6gicDEZSNwVSuLfdiuHCMcAVWx+pQIyHji6EoyIBjNsF8LoBZo +MY5N+qRph8tt9k1NGemQoaZWd926jWgrsSSrAfgtMxw43TXwCFe8RiL8L+pZlN4x +xYjQj1/PtTowqjzLdYqWAT0o5zwlqkrNgjTuYwIDAQABAoIBAB6ug2LazMA3Utwu +tazQhlqs2BidY8jtiqnDXqM2JXMllYpW175+JT9sTtT0tNKlXn4vxhy8Zcmrc36z +WMGmvNVoHtReOluJZzUp0hblTrgDQ/FuFA6Jumx2iLY4rI7LVFfTzHn+kAfT5q2X +CXYoCcClfh8WwZzuzYKd9jLSaP0sMKBqz7IAJDE3Ie3vzsznp56ZceMZqgqDjbgw +p1Gt2eNNWdi0GXSxvv5x9o5UYCNCkmb9Ot3/l4aVMe+jxwtd6b0xjjIry/Orw4Y3 +L4Zu5x07np5K+RxKer9Y6zlKR6iyVME3r6a014dCoKVLpdUph+sTQq3qn2PmdFYk +XM6eAlECgYEA///UzS31YTqsMehPWEHWF+TkqZJfVCegZgSCGOUXkPXAZoLzVwsK +WwMILYMDR9ur9lJ7xzcBtSc9PylZFX0hFfHeCE30XHZ0CaX2f07cVI4WxRYCDtNJ +7rAb7r1ADG4jWEEqMuGBliDT8Sp/2zZfD9q47JnTQsrhgSW1YwJHh1kCgYEA01Qc +fJyYnlLdZnuKUwu2AJslOBup2Ntp8IFRpUSuaPrC3h/WqUU+ALhhtkI6ZZTqdmoo +9aRqEFwIlLOU2J4PempwOh8tVQoAz37Ye+J5DDfqqn2KUeC28qHhmjHPBz7bw3wa +Nfs73/KsDNIElnygmk6emlUcN1l1kW0hdRLp6BsCgYBiCI1seWITds2EWysvaB7d +jZkHWvdImdgx2R4c/HYW3BVu7EzVk3PGwJV8IES8WuIydQnTkzwDLGCm9GWZ9g4a +gkH9uiSO2Am9vCF2RTPY6YTMuo3VMZKJZkV8GlsRp4e/f0zyqSrf2/htzVGjF+I1 +hxPz/0BIvrq2o0MgBDpyGQKBgAeNS+9QEUwnHe5Zn9nT408mPDBDHNC5FpIXrPlA ++RKbU3don90wskSIUkWXHEshBTfyF0Cf/YJUJ6JYwIr1Kwxu3U/WaWJOlzTTDZ1v +vG+pV+N71QOUCjWlf1BpU0KpBmV3+9/N+JfKLkfPAYb3MS4SfSx6uiVoNwFZawaq +BF3dAoGAYFombeE1Ky5CqoCu31CUvAX8FXI+32fZYC2YBguc9FMIVU9NCeBLBDIB +D24UchcTfJLtn1GIMjv8+OSwiv7g2LlHlMB0q6j0k+9xkA9sMn5BgbsNs6Nsa+hu +pp9Kl4jib8r434jOp4RoxkA6toI6rw88M8GZHNee1PW3MwMcdm4= +-----END RSA PRIVATE KEY-----