/* ** Zabbix ** Copyright (C) 2001-2023 Zabbix SIA ** ** 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ package alias import ( "testing" "git.zabbix.com/ap/plugin-support/conf" "git.zabbix.com/ap/plugin-support/log" "zabbix.com/internal/agent" ) func TestGetAlias(t *testing.T) { type Result struct { input, key string fail bool } aliases := []string{ `x:y`, `a[*]:k[*]`, `alias[*]:key[*]`, `alias2:key`, `alias3:key[*]`, `alias4[*]:key`, `xalias4[*]:xkey`, `alias5[*]:key[a]`, `alias5[ *]:key[a]`, `agent.hostname:agent.ping`, } results := []Result{ Result{input: `x`, key: `y`}, Result{input: `a[]`, key: `k[]`}, Result{input: `a[a,b]`, key: `k[a,b]`}, Result{input: `alias[]`, key: `key[]`}, Result{input: `alias[a]`, key: `key[a]`}, Result{input: `alias[,a,]`, key: `key[,a,]`}, Result{input: `alias[ a]`, key: `key[ a]`}, Result{input: `alias[a,b]`, key: `key[a,b]`}, Result{input: `alias2`, key: `key`}, Result{input: `alias3`, key: `key[*]`}, Result{input: `alias4[a]`, key: `key`}, Result{input: `xalias4[a]`, key: `xkey`}, Result{input: `alias5[b]`, key: `key[a]`}, Result{input: `alias5[b]`, key: `key[a]`}, Result{input: `alias5[123abc]`, key: `key[a]`}, Result{input: `alias5[ *]`, key: `key[a]`}, Result{input: `agent.hostname`, key: `agent.ping`}, Result{input: `no.alias`, key: `key`, fail: true}, Result{input: `no.alias`, key: `no.alias`, fail: true}, Result{input: `no.alias[*]`, key: `no.alias[*]`, fail: true}, Result{input: `no.alias[*]`, key: `no.alias[a,b]`, fail: true}, } _ = log.Open(log.Console, log.Debug, "", 0) var options agent.AgentOptions _ = conf.Unmarshal([]byte{}, &options) options.Alias = aliases if manager, err := NewManager(&options); err == nil { for _, result := range results { t.Run(result.input, func(t *testing.T) { t.Logf("result.input: %s", result.input) key := manager.Get(result.input) if !result.fail { if key != result.key { t.Errorf("Expected key '%s' while got '%s'", result.key, key) } } else if key != result.input { t.Errorf("Expected original key '%s' while got '%s'", result.input, key) } }) } } else { t.Errorf("Cannot create new manager: %s", err) } }