Overview

The following section describes the key decisions and assumptions made to develop the application.

  • A room can be booked for one hour.

  • There are 20 rooms in total.

  • The rooms are pretty similar in terms of size.

  • In order to strike fairness in terms of reservation numbers, both companies will be a given a configured quota number that default to 100 reservations.

  • Both companies, to ease the reservations process, had put in charge user1 and user2 resp for COKE and PEPSI . However the system is open to put more users.

  • The available time slots to make a reservation are the following:

Timeslot

8:00 am - 09:00 am

09:00 am - 10:00 am

10:00 am - 11:00 am

11:00 am - 12:00 pm

12:00 pm - 13:00 pm

13:00 pm - 14:00 pm

14:00 pm - 15:00 pm

15:00 pm - 16:00 pm

16:00 pm - 17:00 pm

17:00 pm - 18:00 pm

HTTP verbs

Coladay application tries to adhere as closely as possible to standard HTTP and REST conventions in its use of HTTP verbs.

Verb Usage

GET

Used to retrieve a resource

POST

Used to create a new resource

PATCH

Used to update an existing resource, including partial updates

DELETE

Used to delete an existing resource

HTTP status codes

RESTful notes tries to adhere as closely as possible to standard HTTP and REST conventions in its use of HTTP status codes.

Status code Usage

200 OK

The request completed successfully

201 Created

A new resource has been created successfully. The resource’s URI is available from the response’s Location header

204 No Content

An update to an existing resource has been applied successfully

400 Bad Request

The request was malformed. The response body will include an error providing further information

404 Not Found

The requested resource did not exist

409 Not Found

The requested resource was in conflict with an existing one. The response body will include an error providing further information.

Hypermedia

Coladay uses hypermedia and resources include links to other resources in their responses. Responses are in Hypertext Application Language (HAL) format. Links can be found beneath the _links key. Users of the API should not create URIs themselves, instead they should use the above-described links to navigate from resource to resource.

Resources

Reservation

The Reservation resources is used to create, delete, update and list resources.

Creating a reservation

A POST request used to create a reservation.

Curl request

$ curl 'http://localhost:8080/reservations' -i -u 'user1:password1' -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/hal+json' \
    -d '{"timeSlot":"NINE_AM_TO_TEN_AM","room":"/rooms/1"}'

HTTP request

POST /reservations HTTP/1.1
Content-Type: application/json
Accept: application/hal+json
Content-Length: 50
Authorization: Basic dXNlcjE6cGFzc3dvcmQx
Host: localhost:8080

{"timeSlot":"NINE_AM_TO_TEN_AM","room":"/rooms/1"}

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Location: http://localhost:8080/reservations/1
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 388

{
  "timeSlot" : "NINE_AM_TO_TEN_AM",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/reservations/1"
    },
    "reservation" : {
      "href" : "http://localhost:8080/reservations/1"
    },
    "room" : {
      "href" : "http://localhost:8080/reservations/1/room"
    },
    "organizer" : {
      "href" : "http://localhost:8080/reservations/1/organizer"
    }
  }
}

List reservations

A GET request used to list all reservations.

Curl request

$ curl 'http://localhost:8080/reservations' -i -u 'user1:password1' -X GET \
    -H 'Accept: application/hal+json'

HTTP request

GET /reservations HTTP/1.1
Accept: application/hal+json
Authorization: Basic dXNlcjE6cGFzc3dvcmQx
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 881

{
  "_embedded" : {
    "reservations" : [ {
      "timeSlot" : "EIGHT_AM_TO_NINE_AM",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/reservations/10000"
        },
        "reservation" : {
          "href" : "http://localhost:8080/reservations/10000"
        },
        "organizer" : {
          "href" : "http://localhost:8080/reservations/10000/organizer"
        },
        "room" : {
          "href" : "http://localhost:8080/reservations/10000/room"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/reservations"
    },
    "profile" : {
      "href" : "http://localhost:8080/profile/reservations"
    },
    "search" : {
      "href" : "http://localhost:8080/reservations/search"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}

Cancel a reservation

A DELETE request used to cancel a reservation.

Curl request

$ curl 'http://localhost:8080/reservations/10000' -i -u 'user1:password1' -X DELETE \
    -H 'Accept: application/hal+json'

HTTP request

DELETE /reservations/10000 HTTP/1.1
Accept: application/hal+json
Authorization: Basic dXNlcjE6cGFzc3dvcmQx
Host: localhost:8080

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Room

List rooms

A GET request used to list all rooms and their availabilities.

Curl request

$ curl 'http://localhost:8080/rooms?size=1' -i -u 'user1:password1' -X GET \
    -H 'Accept: application/hal+json'

HTTP request

GET /rooms?size=1 HTTP/1.1
Accept: application/hal+json
Authorization: Basic dXNlcjE6cGFzc3dvcmQx
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 908

{
  "_embedded" : {
    "rooms" : [ {
      "name" : "COKE_R01",
      "owner" : "COKE",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/rooms/1"
        },
        "room" : {
          "href" : "http://localhost:8080/rooms/1"
        },
        "reservations" : {
          "href" : "http://localhost:8080/rooms/1/reservations"
        }
      }
    } ]
  },
  "_links" : {
    "first" : {
      "href" : "http://localhost:8080/rooms?page=0&size=1"
    },
    "self" : {
      "href" : "http://localhost:8080/rooms?size=1"
    },
    "next" : {
      "href" : "http://localhost:8080/rooms?page=1&size=1"
    },
    "last" : {
      "href" : "http://localhost:8080/rooms?page=19&size=1"
    },
    "profile" : {
      "href" : "http://localhost:8080/profile/rooms"
    }
  },
  "page" : {
    "size" : 1,
    "totalElements" : 20,
    "totalPages" : 20,
    "number" : 0
  }
}

User

List users

A GET request used to list all users.

Curl request

$ curl 'http://localhost:8080/users' -i -u 'user1:password1' -X GET \
    -H 'Accept: application/hal+json'

HTTP request

GET /users HTTP/1.1
Accept: application/hal+json
Authorization: Basic dXNlcjE6cGFzc3dvcmQx
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 701

{
  "_embedded" : {
    "users" : [ {
      "name" : "user1",
      "company" : "COKE",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/users/1"
        },
        "user" : {
          "href" : "http://localhost:8080/users/1"
        }
      }
    }, {
      "name" : "user2",
      "company" : "PEPSI",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/users/2"
        },
        "user" : {
          "href" : "http://localhost:8080/users/2"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/users"
    },
    "profile" : {
      "href" : "http://localhost:8080/profile/users"
    }
  }
}

Metrics

List all metrics endpoints

A GET request used to list all metrics endpoints.

Curl request

$ curl 'http://localhost:8080/actuator/' -i -X GET \
    -H 'Accept: application/json'

HTTP request

GET /actuator/ HTTP/1.1
Accept: application/json
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 522

{"_links":{"self":{"href":"http://localhost:8080/actuator","templated":false},"health":{"href":"http://localhost:8080/actuator/health","templated":false},"health-path":{"href":"http://localhost:8080/actuator/health/{*path}","templated":true},"prometheus":{"href":"http://localhost:8080/actuator/prometheus","templated":false},"metrics-requiredMetricName":{"href":"http://localhost:8080/actuator/metrics/{requiredMetricName}","templated":true},"metrics":{"href":"http://localhost:8080/actuator/metrics","templated":false}}}

List all application metrics

A GET request used to list all application metrics.

Curl request

$ curl 'http://localhost:8080/actuator/metrics' -i -X GET \
    -H 'Accept: application/json'

HTTP request

GET /actuator/metrics HTTP/1.1
Accept: application/json
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1273

{"names":["application.ready.time","application.started.time","disk.free","disk.total","executor.active","executor.completed","executor.pool.core","executor.pool.max","executor.pool.size","executor.queue.remaining","executor.queued","hikaricp.connections","hikaricp.connections.acquire","hikaricp.connections.active","hikaricp.connections.creation","hikaricp.connections.idle","hikaricp.connections.max","hikaricp.connections.min","hikaricp.connections.pending","hikaricp.connections.timeout","hikaricp.connections.usage","jdbc.connections.active","jdbc.connections.idle","jdbc.connections.max","jdbc.connections.min","jvm.buffer.count","jvm.buffer.memory.used","jvm.buffer.total.capacity","jvm.classes.loaded","jvm.classes.unloaded","jvm.gc.live.data.size","jvm.gc.max.data.size","jvm.gc.memory.allocated","jvm.gc.memory.promoted","jvm.gc.overhead","jvm.gc.pause","jvm.memory.committed","jvm.memory.max","jvm.memory.usage.after.gc","jvm.memory.used","jvm.threads.daemon","jvm.threads.live","jvm.threads.peak","jvm.threads.states","logback.events","number_of_reservations","process.cpu.usage","process.files.max","process.files.open","process.start.time","process.uptime","spring.data.repository.invocations","system.cpu.count","system.cpu.usage","system.load.average.1m"]}

Read aggregated application health

A GET request used to read application health.

Curl request

$ curl 'http://localhost:8080/actuator/health' -i -X GET \
    -H 'Accept: application/json'

HTTP request

GET /actuator/health HTTP/1.1
Accept: application/json
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 49

{"status":"UP","groups":["liveness","readiness"]}

Read readiness probe

A GET request used to check application readiness.

Curl request

$ curl 'http://localhost:8080/actuator/health/readiness' -i -X GET \
    -H 'Accept: application/json'

HTTP request

GET /actuator/health/readiness HTTP/1.1
Accept: application/json
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 15

{"status":"UP"}

Read liveness probe

A GET request used to check application liveness.

Curl request

$ curl 'http://localhost:8080/actuator/health/liveness' -i -X GET \
    -H 'Accept: application/json'

HTTP request

GET /actuator/health/liveness HTTP/1.1
Accept: application/json
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 15

{"status":"UP"}

List all application metrics in prometheus format

A GET request used to list all metrics endpoints in prometheus format. This endpoint is generally called by Prometheus to scrap application metrics.

Curl request

$ curl 'http://localhost:8080/actuator/prometheus' -i -X GET \
    -H 'Accept: text/plain'

HTTP request

GET /actuator/prometheus HTTP/1.1
Accept: text/plain
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Content-Type: text/plain;version=0.0.4;charset=utf-8
Content-Length: 15982
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

# HELP jvm_buffer_memory_used_bytes An estimate of the memory that the Java virtual machine is using for this buffer pool
# TYPE jvm_buffer_memory_used_bytes gauge
jvm_buffer_memory_used_bytes{application="coladay",id="direct",} 15020.0
jvm_buffer_memory_used_bytes{application="coladay",id="mapped",} 0.0
# HELP disk_total_bytes Total space for path
# TYPE disk_total_bytes gauge
disk_total_bytes{application="coladay",path="/home/runner/work/cola-day/cola-day/.",} 8.9297309696E10
# HELP process_start_time_seconds Start time of the process since unix epoch.
# TYPE process_start_time_seconds gauge
process_start_time_seconds{application="coladay",} 1.66022667046E9
# HELP process_uptime_seconds The uptime of the Java virtual machine
# TYPE process_uptime_seconds gauge
process_uptime_seconds{application="coladay",} 28.577
# HELP system_load_average_1m The sum of the number of runnable entities queued to available processors and the number of runnable entities running on the available processors averaged over a period of time
# TYPE system_load_average_1m gauge
system_load_average_1m{application="coladay",} 1.97
# HELP jvm_memory_max_bytes The maximum amount of memory in bytes that can be used for memory management
# TYPE jvm_memory_max_bytes gauge
jvm_memory_max_bytes{application="coladay",area="heap",id="G1 Eden Space",} -1.0
jvm_memory_max_bytes{application="coladay",area="heap",id="G1 Old Gen",} 1.820327936E9
jvm_memory_max_bytes{application="coladay",area="nonheap",id="Metaspace",} -1.0
jvm_memory_max_bytes{application="coladay",area="heap",id="G1 Survivor Space",} -1.0
jvm_memory_max_bytes{application="coladay",area="nonheap",id="CodeHeap 'non-nmethods'",} 5828608.0
jvm_memory_max_bytes{application="coladay",area="nonheap",id="CodeHeap 'non-profiled nmethods'",} 1.22916864E8
jvm_memory_max_bytes{application="coladay",area="nonheap",id="Compressed Class Space",} 1.073741824E9
jvm_memory_max_bytes{application="coladay",area="nonheap",id="CodeHeap 'profiled nmethods'",} 1.22912768E8
# HELP jvm_gc_memory_promoted_bytes_total Count of positive increases in the size of the old generation memory pool before GC to after GC
# TYPE jvm_gc_memory_promoted_bytes_total counter
jvm_gc_memory_promoted_bytes_total{application="coladay",} 2807296.0
# HELP jvm_threads_states_threads The current number of threads having NEW state
# TYPE jvm_threads_states_threads gauge
jvm_threads_states_threads{application="coladay",state="blocked",} 0.0
jvm_threads_states_threads{application="coladay",state="waiting",} 1.0
jvm_threads_states_threads{application="coladay",state="timed-waiting",} 7.0
jvm_threads_states_threads{application="coladay",state="runnable",} 5.0
jvm_threads_states_threads{application="coladay",state="new",} 0.0
jvm_threads_states_threads{application="coladay",state="terminated",} 0.0
# HELP hikaricp_connections_idle Idle connections
# TYPE hikaricp_connections_idle gauge
hikaricp_connections_idle{application="coladay",pool="HikariPool-2",} 9.0
# HELP process_files_max_files The maximum file descriptor count
# TYPE process_files_max_files gauge
process_files_max_files{application="coladay",} 65536.0
# HELP executor_completed_tasks_total The approximate total number of tasks that have completed execution
# TYPE executor_completed_tasks_total counter
executor_completed_tasks_total{application="coladay",name="applicationTaskExecutor",} 0.0
# HELP jvm_gc_overhead_percent An approximation of the percent of CPU time used by GC activities over the last lookback period or since monitoring began, whichever is shorter, in the range [0..1]
# TYPE jvm_gc_overhead_percent gauge
jvm_gc_overhead_percent{application="coladay",} 0.047999302515874365
# HELP hikaricp_connections_creation_seconds_max Connection creation time
# TYPE hikaricp_connections_creation_seconds_max gauge
hikaricp_connections_creation_seconds_max{application="coladay",pool="HikariPool-2",} 0.0
# HELP hikaricp_connections_creation_seconds Connection creation time
# TYPE hikaricp_connections_creation_seconds summary
hikaricp_connections_creation_seconds_count{application="coladay",pool="HikariPool-2",} 0.0
hikaricp_connections_creation_seconds_sum{application="coladay",pool="HikariPool-2",} 0.0
# HELP executor_pool_max_threads The maximum allowed number of threads in the pool
# TYPE executor_pool_max_threads gauge
executor_pool_max_threads{application="coladay",name="applicationTaskExecutor",} 2.147483647E9
# HELP executor_active_threads The approximate number of threads that are actively executing tasks
# TYPE executor_active_threads gauge
executor_active_threads{application="coladay",name="applicationTaskExecutor",} 0.0
# HELP executor_pool_core_threads The core number of threads for the pool
# TYPE executor_pool_core_threads gauge
executor_pool_core_threads{application="coladay",name="applicationTaskExecutor",} 8.0
# HELP hikaricp_connections_timeout_total Connection timeout total count
# TYPE hikaricp_connections_timeout_total counter
hikaricp_connections_timeout_total{application="coladay",pool="HikariPool-2",} 0.0
# HELP system_cpu_usage The "recent cpu usage" of the system the application is running in
# TYPE system_cpu_usage gauge
system_cpu_usage{application="coladay",} 0.0
# HELP jvm_gc_live_data_size_bytes Size of long-lived heap memory pool after reclamation
# TYPE jvm_gc_live_data_size_bytes gauge
jvm_gc_live_data_size_bytes{application="coladay",} 0.0
# HELP logback_events_total Number of error level events that made it to the logs
# TYPE logback_events_total counter
logback_events_total{application="coladay",level="error",} 0.0
logback_events_total{application="coladay",level="debug",} 0.0
logback_events_total{application="coladay",level="trace",} 0.0
logback_events_total{application="coladay",level="warn",} 1.0
logback_events_total{application="coladay",level="info",} 5.0
# HELP hikaricp_connections_max Max connections
# TYPE hikaricp_connections_max gauge
hikaricp_connections_max{application="coladay",pool="HikariPool-2",} 10.0
# HELP jvm_memory_usage_after_gc_percent The percentage of long-lived heap pool used after the last GC event, in the range [0..1]
# TYPE jvm_memory_usage_after_gc_percent gauge
jvm_memory_usage_after_gc_percent{application="coladay",area="heap",pool="long-lived",} 0.026496289512528803
# HELP hikaricp_connections_usage_seconds Connection usage time
# TYPE hikaricp_connections_usage_seconds summary
hikaricp_connections_usage_seconds_count{application="coladay",pool="HikariPool-2",} 1.0
hikaricp_connections_usage_seconds_sum{application="coladay",pool="HikariPool-2",} 0.001
# HELP hikaricp_connections_usage_seconds_max Connection usage time
# TYPE hikaricp_connections_usage_seconds_max gauge
hikaricp_connections_usage_seconds_max{application="coladay",pool="HikariPool-2",} 0.001
# HELP jvm_gc_max_data_size_bytes Max size of long-lived heap memory pool
# TYPE jvm_gc_max_data_size_bytes gauge
jvm_gc_max_data_size_bytes{application="coladay",} 1.820327936E9
# HELP jvm_buffer_total_capacity_bytes An estimate of the total capacity of the buffers in this pool
# TYPE jvm_buffer_total_capacity_bytes gauge
jvm_buffer_total_capacity_bytes{application="coladay",id="direct",} 15020.0
jvm_buffer_total_capacity_bytes{application="coladay",id="mapped",} 0.0
# HELP jvm_memory_used_bytes The amount of used memory
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{application="coladay",area="heap",id="G1 Eden Space",} 1.43654912E8
jvm_memory_used_bytes{application="coladay",area="heap",id="G1 Old Gen",} 4.8231936E7
jvm_memory_used_bytes{application="coladay",area="nonheap",id="Metaspace",} 1.30239216E8
jvm_memory_used_bytes{application="coladay",area="heap",id="G1 Survivor Space",} 1.9922944E7
jvm_memory_used_bytes{application="coladay",area="nonheap",id="CodeHeap 'non-nmethods'",} 1311616.0
jvm_memory_used_bytes{application="coladay",area="nonheap",id="CodeHeap 'non-profiled nmethods'",} 5469056.0
jvm_memory_used_bytes{application="coladay",area="nonheap",id="Compressed Class Space",} 1.476436E7
jvm_memory_used_bytes{application="coladay",area="nonheap",id="CodeHeap 'profiled nmethods'",} 2.9768576E7
# HELP system_cpu_count The number of processors available to the Java virtual machine
# TYPE system_cpu_count gauge
system_cpu_count{application="coladay",} 2.0
# HELP hikaricp_connections_active Active connections
# TYPE hikaricp_connections_active gauge
hikaricp_connections_active{application="coladay",pool="HikariPool-2",} 1.0
# HELP jdbc_connections_min Minimum number of idle connections in the pool.
# TYPE jdbc_connections_min gauge
jdbc_connections_min{application="coladay",name="dataSource",} 10.0
# HELP jvm_gc_memory_allocated_bytes_total Incremented for an increase in the size of the (young) heap memory pool after one GC to before the next
# TYPE jvm_gc_memory_allocated_bytes_total counter
jvm_gc_memory_allocated_bytes_total{application="coladay",} 1.81403648E8
# HELP jvm_memory_committed_bytes The amount of memory in bytes that is committed for the Java virtual machine to use
# TYPE jvm_memory_committed_bytes gauge
jvm_memory_committed_bytes{application="coladay",area="heap",id="G1 Eden Space",} 1.9922944E8
jvm_memory_committed_bytes{application="coladay",area="heap",id="G1 Old Gen",} 1.28974848E8
jvm_memory_committed_bytes{application="coladay",area="nonheap",id="Metaspace",} 1.33763072E8
jvm_memory_committed_bytes{application="coladay",area="heap",id="G1 Survivor Space",} 1.9922944E7
jvm_memory_committed_bytes{application="coladay",area="nonheap",id="CodeHeap 'non-nmethods'",} 2555904.0
jvm_memory_committed_bytes{application="coladay",area="nonheap",id="CodeHeap 'non-profiled nmethods'",} 5505024.0
jvm_memory_committed_bytes{application="coladay",area="nonheap",id="Compressed Class Space",} 1.6121856E7
jvm_memory_committed_bytes{application="coladay",area="nonheap",id="CodeHeap 'profiled nmethods'",} 2.981888E7
# HELP application_started_time_seconds Time taken (ms) to start the application
# TYPE application_started_time_seconds gauge
application_started_time_seconds{application="coladay",main_application_class="com.sy.coladay.metrics.MetricsControllerIT",} 1.678
# HELP jvm_buffer_count_buffers An estimate of the number of buffers in the pool
# TYPE jvm_buffer_count_buffers gauge
jvm_buffer_count_buffers{application="coladay",id="direct",} 1.0
jvm_buffer_count_buffers{application="coladay",id="mapped",} 0.0
# HELP jvm_threads_peak_threads The peak live thread count since the Java virtual machine started or peak was reset
# TYPE jvm_threads_peak_threads gauge
jvm_threads_peak_threads{application="coladay",} 13.0
# HELP process_cpu_usage The "recent cpu usage" for the Java Virtual Machine process
# TYPE process_cpu_usage gauge
process_cpu_usage{application="coladay",} 0.0
# HELP hikaricp_connections_acquire_seconds Connection acquire time
# TYPE hikaricp_connections_acquire_seconds summary
hikaricp_connections_acquire_seconds_count{application="coladay",pool="HikariPool-2",} 2.0
hikaricp_connections_acquire_seconds_sum{application="coladay",pool="HikariPool-2",} 0.00108429
# HELP hikaricp_connections_acquire_seconds_max Connection acquire time
# TYPE hikaricp_connections_acquire_seconds_max gauge
hikaricp_connections_acquire_seconds_max{application="coladay",pool="HikariPool-2",} 0.00107379
# HELP jvm_threads_live_threads The current number of live threads including both daemon and non-daemon threads
# TYPE jvm_threads_live_threads gauge
jvm_threads_live_threads{application="coladay",} 13.0
# HELP number_of_reservations_total
# TYPE number_of_reservations_total counter
number_of_reservations_total{application="coladay",owner="pepsi",} 0.0
number_of_reservations_total{application="coladay",owner="coke",} 0.0
# HELP jvm_gc_pause_seconds Time spent in GC pause
# TYPE jvm_gc_pause_seconds summary
jvm_gc_pause_seconds_count{action="end of minor GC",application="coladay",cause="G1 Evacuation Pause",} 1.0
jvm_gc_pause_seconds_sum{action="end of minor GC",application="coladay",cause="G1 Evacuation Pause",} 0.046
# HELP jvm_gc_pause_seconds_max Time spent in GC pause
# TYPE jvm_gc_pause_seconds_max gauge
jvm_gc_pause_seconds_max{action="end of minor GC",application="coladay",cause="G1 Evacuation Pause",} 0.046
# HELP process_files_open_files The open file descriptor count
# TYPE process_files_open_files gauge
process_files_open_files{application="coladay",} 179.0
# HELP hikaricp_connections_min Min connections
# TYPE hikaricp_connections_min gauge
hikaricp_connections_min{application="coladay",pool="HikariPool-2",} 10.0
# HELP jdbc_connections_active Current number of active connections that have been allocated from the data source.
# TYPE jdbc_connections_active gauge
jdbc_connections_active{application="coladay",name="dataSource",} 1.0
# HELP executor_queue_remaining_tasks The number of additional elements that this queue can ideally accept without blocking
# TYPE executor_queue_remaining_tasks gauge
executor_queue_remaining_tasks{application="coladay",name="applicationTaskExecutor",} 2.147483647E9
# HELP jvm_classes_unloaded_classes_total The total number of classes unloaded since the Java virtual machine has started execution
# TYPE jvm_classes_unloaded_classes_total counter
jvm_classes_unloaded_classes_total{application="coladay",} 0.0
# HELP hikaricp_connections_pending Pending threads
# TYPE hikaricp_connections_pending gauge
hikaricp_connections_pending{application="coladay",pool="HikariPool-2",} 0.0
# HELP application_ready_time_seconds Time taken (ms) for the application to be ready to service requests
# TYPE application_ready_time_seconds gauge
application_ready_time_seconds{application="coladay",main_application_class="com.sy.coladay.metrics.MetricsControllerIT",} 1.681
# HELP executor_queued_tasks The approximate number of tasks that are queued for execution
# TYPE executor_queued_tasks gauge
executor_queued_tasks{application="coladay",name="applicationTaskExecutor",} 0.0
# HELP jdbc_connections_idle Number of established but idle connections.
# TYPE jdbc_connections_idle gauge
jdbc_connections_idle{application="coladay",name="dataSource",} 9.0
# HELP spring_data_repository_invocations_seconds_max
# TYPE spring_data_repository_invocations_seconds_max gauge
spring_data_repository_invocations_seconds_max{application="coladay",exception="None",method="countByOrganizerCompany",repository="ReservationRepository",state="SUCCESS",} 0.012301891
# HELP spring_data_repository_invocations_seconds
# TYPE spring_data_repository_invocations_seconds summary
spring_data_repository_invocations_seconds_count{application="coladay",exception="None",method="countByOrganizerCompany",repository="ReservationRepository",state="SUCCESS",} 2.0
spring_data_repository_invocations_seconds_sum{application="coladay",exception="None",method="countByOrganizerCompany",repository="ReservationRepository",state="SUCCESS",} 0.014202774
# HELP disk_free_bytes Usable space for path
# TYPE disk_free_bytes gauge
disk_free_bytes{application="coladay",path="/home/runner/work/cola-day/cola-day/.",} 3.261073408E10
# HELP hikaricp_connections Total connections
# TYPE hikaricp_connections gauge
hikaricp_connections{application="coladay",pool="HikariPool-2",} 10.0
# HELP jdbc_connections_max Maximum number of active connections that can be allocated at the same time.
# TYPE jdbc_connections_max gauge
jdbc_connections_max{application="coladay",name="dataSource",} 10.0
# HELP jvm_classes_loaded_classes The number of classes that are currently loaded in the Java virtual machine
# TYPE jvm_classes_loaded_classes gauge
jvm_classes_loaded_classes{application="coladay",} 20885.0
# HELP jvm_threads_daemon_threads The current number of live daemon threads
# TYPE jvm_threads_daemon_threads gauge
jvm_threads_daemon_threads{application="coladay",} 12.0
# HELP executor_pool_size_threads The current number of threads in the pool
# TYPE executor_pool_size_threads gauge
executor_pool_size_threads{application="coladay",name="applicationTaskExecutor",} 0.0