Skip to content

Instantly share code, notes, and snippets.

@jasonheecs
jasonheecs / FooTest.kt
Created September 7, 2022 18:51
Sample Unit test illustrating how to test log4j2 loggers using a custom appender
package com.example
import com.example.appender.TestAppender
import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.core.LoggerContext
import org.apache.logging.log4j.core.config.Configuration
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals
@jasonheecs
jasonheecs / Foo.kt
Created September 7, 2022 18:06
Foo class used to illustrate testing of a log4j logger
package com.example
import mu.KotlinLogging
class Foo {
private val logger = KotlinLogging.logger {}
fun bar() {
logger.error("this is a test log message")
}
@jasonheecs
jasonheecs / log4j2-test.xml
Last active September 7, 2022 09:04
Sample configuration to inject a TestAppender into log4j2
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="LOG_PATTERN">
%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
@jasonheecs
jasonheecs / TestAppender.kt
Last active September 13, 2022 17:24
TestAppender used for unit testing in log4j2 loggers
package com.example.appender
import org.apache.logging.log4j.core.Filter
import org.apache.logging.log4j.core.Layout
import org.apache.logging.log4j.core.LogEvent
import org.apache.logging.log4j.core.appender.AbstractAppender
import org.apache.logging.log4j.core.config.Property
import org.apache.logging.log4j.core.config.plugins.Plugin
import org.apache.logging.log4j.core.config.plugins.PluginAttribute
import org.apache.logging.log4j.core.config.plugins.PluginElement
let heartBeatActivated = false;
class HeartBeat {
constructor() {
document.addEventListener('DOMContentLoaded', () => {
this.initHeartBeat();
});
}
initHeartBeat() {
this.lastActive = new Date().valueOf();
const sessionTimeoutPollFrequency = 5;
function pollForSessionTimeout() {
let request = new XMLHttpRequest();
request.onload = function (event) {
var status = event.target.status;
var response = event.target.response;
// if the remaining valid time for the current user session is less than or equals to 0 seconds.
if (status === 200 && (response <= 0)) {
@jasonheecs
jasonheecs / session_timeout_controller.rb
Last active March 11, 2021 11:17
SessionTimeoutController
class SessionTimeoutController < Devise::SessionsController
prepend_before_action :skip_timeout, only: [:check_session_timeout, :render_timeout]
def check_session_timeout
response.headers["Etag"] = "" # clear etags to prevent caching
render plain: ttl_to_timeout, status: :ok
end
def render_timeout
if current_user.present? && user_signed_in?
@jasonheecs
jasonheecs / routes.rb
Created March 11, 2021 07:44
new routes for session timeout
devise_scope :user do
get "/check_session_timeout" => "session_timeout#check_session_timeout"
get "/session_timeout" => "session_timeout#render_timeout"
end
@jasonheecs
jasonheecs / user.rb
Created March 11, 2021 07:15
Implementing timeoutable on a Devise User model
class User < ActiveRecord::Base
devise :timeoutable
end
Packsize SKU Variant SKU Quantity
DK0475-JJ-P10 DK0475-JJ 10
DK0280P-JJ-P10 DK0280P-JJ 10
DK0280S-JJ-P10 DK0280S-JJ 10
DK0092-JJ-P10 DK0092-JJ 10
DK0094Y-JJ-P10 DK0094Y-JJ 10
DK0090-JJ-P10 DK0090-JJ 10
DK0095-JJ-P10 DK0095-JJ 10
DK0096-JJ-P10 DK0096-JJ 10
DK0097-JJ-P10 DK0097-JJ 10