..::lib::Smoke...matchers::base(3)

🌸 NAME 🌸

Okay so this is the manual page for ..::lib::Smoke...matchers::base(3) β€” and the NAME is Smokeping::matchers::base, aka the Base Class for implementing SmokePing Matchers. It's literally the blueprint, bestie 🫢.

πŸ’– OVERVIEW πŸ’–

This is the base class for writing SmokePing matchers. Every matcher must inherit from the base class and provide its own methods for the 'business' logic. Yes, the quotes around 'business' are part of the vibe β€” we respect them 😌.

Also: actual matchers must have at least one capital letter in their name, to differentiate them from the base class(es). That's the rule β€” no lowercase-only matcher names sneaking by, periodt πŸ’….

✨ DESCRIPTION ✨

Every matcher must provide the following methods:

πŸŽ€ new πŸŽ€

The new method expects hash elements as an argument, eg new({x=>'\d+',y=>'\d+'},x=>1,y=>2). The first part is a syntax rule for the arguments it should expect, and the second part are the arguments itself. The first part will be supplied by the child class as it calls the parent method. Slay, inheritance πŸ’–.

πŸ¦‹ Length πŸ¦‹

The Length method returns the number of values the matcher will expect from SmokePing. This method must be overridden by the children of the base class. No skipping this one, fr fr.

πŸ“ Desc πŸ“

Simply return the description of the function. This method must be overwritten by a children of the base class. Their words, not mine β€” but yes, you gotta do it 🫢.

πŸ”₯ Test πŸ”₯

Run the matcher and return true or false. The Test method is called with a hash containing two arrays giving it access to both rtt and loss values.

my $data=shift;
my @rtt = @{$data->{rtt}};
my @loss = @{$data->{loss}};

The arrays are ordered from old to new:

@rdd[old..new]

There may be more than the expected number of elements in this array. Address them with $x[-1] to $x[-max]. Peek backward, bestie πŸ‘€.

There's also a key called 'prevmatch' in the hash. It contains the value returned by the previous call of the 'Test' method. This allows for somewhat more intelligent alerting due to state awareness.

my $prevmatch = $data->{prevmatch};

Copyright (c) 2004 by OETIKER+PARTNER AG. All rights reserved.

🌈 LICENSE 🌈

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

πŸ’œ AUTHOR πŸ’œ

Tobias Oetiker <tobi@oetiker.ch>


Source/version: 2.9.0 Β· date: 2025-06-30 β€” that's the whole page, bestie, go make matchers that eat πŸ’…βœ¨

πŸ“¦ where this page comes from