116 lines
6.7 KiB
PL/PgSQL
116 lines
6.7 KiB
PL/PgSQL
-- Copyright (c) HashiCorp, Inc.
|
|||
|
|
-- SPDX-License-Identifier: BUSL-1.1
|
||
|
|
|
||
|
|
begin;
|
||
|
|
select plan(20);
|
||
|
|
|
||
|
|
select lives_ok('truncate wh_session_connection_accumulating_fact, wh_session_accumulating_fact',
|
||
|
|
'Truncate tables in preparation for testing');
|
||
|
|
|
||
|
|
-- validate the warehouse fact tables are empty
|
||
|
|
select is(count(*), 0::bigint, 'wh_session_connection_accumulating_fact is not empty') from wh_session_connection_accumulating_fact;
|
||
|
|
select is(count(*), 0::bigint, 'wh_session_accumulating_fact is not empty' ) from wh_session_accumulating_fact;
|
||
|
|
|
||
|
|
-- validate the view returns no rows
|
||
|
|
select is(count(*), 0::bigint, 'hcp_billing_monthly_sessions_all should return 0 rows when there are no sessions') from hcp_billing_monthly_sessions_all;
|
||
|
|
select is(count(*), 1::bigint, 'hcp_billing_monthly_sessions_current_month should return 1 rows when there are no sessions') from hcp_billing_monthly_sessions_current_month;
|
||
|
|
select results_eq('select sessions_pending_count from hcp_billing_monthly_sessions_current_month',
|
||
|
|
array[0::bigint],
|
||
|
|
'hcp_billing_monthly_sessions_current_month should return 1 row with 0 sessions pending');
|
||
|
|
select is(count(*), 2::bigint, 'hcp_billing_monthly_sessions_last_2_months should return 2 rows when there are no sessions') from hcp_billing_monthly_sessions_last_2_months;
|
||
|
|
select results_eq('select sessions_pending_count from hcp_billing_monthly_sessions_last_2_months',
|
||
|
|
array[0::bigint, 0::bigint],
|
||
|
|
'hcp_billing_monthly_sessions_last_2_months should return 2 rows each with 0 sessions pending');
|
||
|
|
|
||
|
|
|
||
|
|
set time zone 'NZ';
|
||
|
|
|
||
|
|
with time_series (time) as (
|
||
|
|
select date_trunc('month', now(), 'utc') - interval '1 minute'
|
||
|
|
),
|
||
|
|
dim_keys (host_key, user_key, credential_group_key) as (
|
||
|
|
select h.key, u.key, 'no credentials'
|
||
|
|
from (select key from wh_host_dimension limit 1) as h,
|
||
|
|
(select key from wh_user_dimension limit 1) as u
|
||
|
|
),
|
||
|
|
dim_time_series (date_key, time_key, time) as (
|
||
|
|
select wh_date_key(time), wh_time_key(time), time
|
||
|
|
from time_series
|
||
|
|
),
|
||
|
|
fake_sessions (session_id, auth_token_id,
|
||
|
|
host_key, user_key, credential_group_key,
|
||
|
|
session_pending_date_key, session_pending_time_key, session_pending_time) as (
|
||
|
|
select concat('s__________', t.date_key, t.time_key), concat('a__________', t.date_key, t.time_key),
|
||
|
|
k.host_key, k.user_key, k.credential_group_key,
|
||
|
|
t.date_key, t.time_key,t.time
|
||
|
|
from dim_keys as k,
|
||
|
|
dim_time_series as t
|
||
|
|
)
|
||
|
|
insert into wh_session_accumulating_fact
|
||
|
|
(session_id, auth_token_id,
|
||
|
|
host_key, user_key, credential_group_key,
|
||
|
|
session_pending_date_key, session_pending_time_key, session_pending_time
|
||
|
|
)
|
||
|
|
select session_id, auth_token_id,
|
||
|
|
host_key, user_key, credential_group_key,
|
||
|
|
session_pending_date_key, session_pending_time_key, session_pending_time
|
||
|
|
from fake_sessions;
|
||
|
|
|
||
|
|
create table test_counts_all (
|
||
|
|
start_time timestamptz primary key,
|
||
|
|
end_time timestamptz,
|
||
|
|
sessions_pending_count bigint not null default 0
|
||
|
|
);
|
||
|
|
create table test_counts_current_month as select * from test_counts_all;
|
||
|
|
|
||
|
|
insert into test_counts_all
|
||
|
|
(start_time, end_time, sessions_pending_count)
|
||
|
|
select date_trunc('month', now(), 'utc') as start_time, -- this month
|
||
|
|
date_trunc('hour', now(), 'utc') as end_time,
|
||
|
|
0::bigint
|
||
|
|
union
|
||
|
|
select date_trunc('month', now() - interval '1 month', 'utc') as start_time, -- last month
|
||
|
|
date_trunc('month', now(), 'utc') as end_time,
|
||
|
|
1::bigint;
|
||
|
|
|
||
|
|
create table test_counts_last_2_months as select * from test_counts_all;
|
||
|
|
|
||
|
|
insert into test_counts_current_month
|
||
|
|
(start_time, end_time, sessions_pending_count)
|
||
|
|
select date_trunc('month', now(), 'utc') as start_time, -- this month
|
||
|
|
date_trunc('hour', now(), 'utc') as end_time,
|
||
|
|
0::bigint;
|
||
|
|
|
||
|
|
-- all
|
||
|
|
prepare select_func_hcp_billing_monthly_sessions_all as select * from hcp_billing_monthly_sessions_all();
|
||
|
|
prepare select_view_hcp_billing_monthly_sessions_all as select * from hcp_billing_monthly_sessions_all;
|
||
|
|
prepare select_test_counts_all as select * from test_counts_all order by start_time desc;
|
||
|
|
|
||
|
|
select results_eq('select_test_counts_all', 'select_func_hcp_billing_monthly_sessions_all', 'set time zone before insert: results_eq');
|
||
|
|
select results_ne('select_test_counts_all', 'select_view_hcp_billing_monthly_sessions_all', 'set time zone before insert: results_ne');
|
||
|
|
select set_eq('select_test_counts_all', 'select_func_hcp_billing_monthly_sessions_all', 'set time zone before insert: set_eq');
|
||
|
|
select set_ne('select_test_counts_all', 'select_view_hcp_billing_monthly_sessions_all', 'set time zone before insert: set_ne');
|
||
|
|
|
||
|
|
-- current month
|
||
|
|
prepare select_func_hcp_billing_monthly_sessions_current_month as select * from hcp_billing_monthly_sessions_current_month();
|
||
|
|
prepare select_view_hcp_billing_monthly_sessions_current_month as select * from hcp_billing_monthly_sessions_current_month;
|
||
|
|
prepare select_test_counts_current_month as select * from test_counts_current_month order by start_time desc;
|
||
|
|
|
||
|
|
select results_eq('select_test_counts_current_month', 'select_func_hcp_billing_monthly_sessions_current_month', 'set time zone before insert: results_eq');
|
||
|
|
select results_ne('select_test_counts_current_month', 'select_view_hcp_billing_monthly_sessions_current_month', 'set time zone before insert: results_ne');
|
||
|
|
select set_eq('select_test_counts_current_month', 'select_func_hcp_billing_monthly_sessions_current_month', 'set time zone before insert: set_eq');
|
||
|
|
select set_ne('select_test_counts_current_month', 'select_view_hcp_billing_monthly_sessions_current_month', 'set time zone before insert: set_ne');
|
||
|
|
|
||
|
|
-- last 2 months
|
||
|
|
prepare select_func_hcp_billing_monthly_sessions_last_2_months as select * from hcp_billing_monthly_sessions_last_2_months();
|
||
|
|
prepare select_view_hcp_billing_monthly_sessions_last_2_months as select * from hcp_billing_monthly_sessions_last_2_months;
|
||
|
|
prepare select_test_counts_last_2_months as select * from test_counts_last_2_months order by start_time desc;
|
||
|
|
|
||
|
|
select results_eq('select_test_counts_last_2_months', 'select_func_hcp_billing_monthly_sessions_last_2_months', 'set time zone before insert: results_eq');
|
||
|
|
select results_ne('select_test_counts_last_2_months', 'select_view_hcp_billing_monthly_sessions_last_2_months', 'set time zone before insert: results_ne');
|
||
|
|
select set_eq('select_test_counts_last_2_months', 'select_func_hcp_billing_monthly_sessions_last_2_months', 'set time zone before insert: set_eq');
|
||
|
|
select set_ne('select_test_counts_last_2_months', 'select_view_hcp_billing_monthly_sessions_last_2_months', 'set time zone before insert: set_ne');
|
||
|
|
|
||
|
|
select * from finish();
|
||
|
|
|
||
|
|
rollback;
|