package Test2::Plugin::MemUsage;
use strict;
use warnings;

our $VERSION = '0.001063';

use Test2::Harness::Util qw/maybe_read_file/;

use Test2::API qw/test2_add_callback_exit/;

my $ADDED_HOOK = 0;

sub import {
    test2_add_callback_exit(\&send_mem_event) unless $ADDED_HOOK++
}

sub send_mem_event {
    my ($ctx, $real, $new) = @_;

    my $file = "/proc/$$/status";
    return unless -f $file;

    my $stats = maybe_read_file($file) or return;

    my %mem;
    $mem{peak} = [$1, $2] if $stats =~ m/VmPeak:\s+(\d+) (\S+)/;
    $mem{size} = [$1, $2] if $stats =~ m/VmSize:\s+(\d+) (\S+)/;
    $mem{rss}  = [$1, $2] if $stats =~ m/VmRSS:\s+(\d+) (\S+)/;
    $mem{details} = "rss:  $mem{rss}->[0]$mem{rss}->[1]\nsize: $mem{size}->[0]$mem{size}->[1]\npeak: $mem{peak}->[0]$mem{peak}->[1]";

    $ctx->send_ev2(
        about  => {details => $mem{details}},
        memory => \%mem,
    );
}

1;