Commit Graph

558 Commits

Author SHA1 Message Date
ionutboangiu
707826359b ips: add ClearAllocations API 2025-08-15 13:13:49 +02:00
gezimbll
71e4563ecd benchmarks for ips functionality && rewriting actionTypes constants 2025-07-28 20:05:10 +02:00
arberkatellari
2ab652ebdd Add tests for ActionProfile modifications 2025-07-21 13:40:22 +02:00
arberkatellari
38e7c7eb39 ActionProfile modifications 2025-07-21 13:40:22 +02:00
ionutboangiu
e8c770c415 prometheus: add node_id label to cache metrics 2025-07-21 10:27:10 +02:00
ionutboangiu
785236592b Port RADIUS DMR/CoA functionality
This commit ports the following changes from v0.11:

- 9991b29 - Implement DisconnectSession API for RADIUS Agent
- 02c8ed1 - Implement support for RADIUS CoA
- 7129d34 - Merge CoA into ReAuthorize logic
- d8ad760 - Update both ReAuthorize API signatures
- 5560608 - Dynamic templates for Radius CoA out of APIOpts
- f9d1c0f - Refactor ReAuthorize to AlterSessions
- 8388832 - Rename agents API object: SessionSv1 to AgentV1
- b580e09 - Add sanity checks for radius templates
- ca6a944 - Update client_da_addresses structure
- 98265a1 - Refactor function names and error msgs related to AlterSessions
- ee98dbe - Update AgentV1DisconnectSession api signature
- c9b6c1f - Add support for sending *dmr template via APIOpts
- 03eff44 - Cache RADIUS packets during accounting instead of auth
- 28e53ce - Add requests_cache_key field to radagent cfg
2025-07-08 08:18:30 +02:00
arberkatellari
e9a1b93229 Add action type *dynamic_threshold & add admins_conns to ActionS module 2025-07-02 21:46:10 +02:00
arberkatellari
1d8e84892a Revise postgres tp tables creation & fix tests 2025-07-02 21:45:29 +02:00
gezimbll
3f83200936 updated thresholded implementation to pass event in EeS 2025-06-27 20:45:33 +02:00
ionutboangiu
932e0dba05 ips: match a single IPAllocations object 2025-06-27 20:42:41 +02:00
ionutboangiu
17b70d907b ips: integrate allocation logic and refactor structure 2025-06-27 20:42:41 +02:00
gezimbll
3c11cddb0d added api definitions in the apis package 2025-06-24 18:17:10 +02:00
ionutboangiu
33735613e7 Rename Pool type to IPPool for clarity 2025-06-03 14:23:29 +02:00
ionutboangiu
df10601b18 include ips cases in index admins apis 2025-06-03 14:23:29 +02:00
ionutboangiu
eb9f826ffd Rename IP to IPAllocations 2025-06-03 14:23:29 +02:00
ionutboangiu
3d76af47bc Revise IPProfile definition + tests 2025-06-03 13:10:15 +02:00
ionutboangiu
eed6b8a51a add implementation for new ips module 2025-05-29 15:46:42 +02:00
arberkatellari
7fe60c2b8b fix failing tests 2025-05-18 16:21:37 +02:00
arberkatellari
5847ceab00 Add and revise tests for offline internal DB 2025-05-13 17:07:17 +02:00
arberkatellari
5b66678313 Add offline internal DB functionality for dataDB,storDB & configDB 2025-05-13 17:07:17 +02:00
ionutboangiu
5e46eeb28a move action type definitions to utils 2025-05-03 21:42:36 +02:00
ionutboangiu
eeecae4576 move resources to dedicated package 2025-05-03 21:42:36 +02:00
ionutboangiu
16d131b058 move attributes to dedicated package 2025-04-22 19:33:12 +02:00
ionutboangiu
069cadd618 move routes to dedicated package 2025-04-22 19:33:12 +02:00
ionutboangiu
52177197f2 refactor matched thresholds sorting 2025-03-25 14:25:00 +01:00
ionutboangiu
0b26559d1f move chargers to dedicated package 2025-03-16 16:28:30 +01:00
ionutboangiu
c762de5c28 move rankings to dedicated package 2025-03-10 13:49:34 +01:00
ionutboangiu
47fb25b4ef move trends to dedicated package
reivse/add comments and order of funcs/definitions
2025-03-10 13:49:34 +01:00
ionutboangiu
24d886c8e0 Pass CGRConfig to DataManager
instead of just CacheCfg. Prevents the need of global config var in
engine/datamanager.go
2025-03-10 13:49:34 +01:00
ionutboangiu
1d536c6390 Revise ServiceManagerV1.Status API
Allows querying for the status of all/multiple services at once.
Reply becomes a map[string]string, where the key is the service name
and the value represents the name of the state the service is in
(instead of returning just RUNNING/STOPPED).
2025-02-07 13:23:59 +01:00
gezimbll
06ccafb5fd added tests for opts with dynamic values 2025-01-22 17:36:26 +01:00
gezimbll
c602dbc2a5 added rsparser field in dynamicOpts
changed Value field to unexported and created a Value() method
on each dynOpts type that contains logic to create a rsparser
in case the value field a configuration starts with prefix "~"
otherwise it will return the specified value
2025-01-22 17:36:26 +01:00
armirveliaj
7db65ca62c Clean up DispatcherS 2025-01-17 17:29:46 +01:00
ionutboangiu
089dfc00ae Use SyncedChan to handle shutdown 2025-01-14 19:00:37 +01:00
armirveliaj
aea5fb0f18 Fix compilation errors 2025-01-13 13:39:50 +01:00
ionutboangiu
c8a3ebe5e8 Use channel instead of context to handle shutdown 2025-01-10 20:18:08 +01:00
gezimbll
2b04066504 added parsing the event for *usage opts in accounts 2025-01-10 12:31:44 +01:00
ionutboangiu
db301f7901 Remove StorDB service param from service constructors
Use ServiceIndexer instead.
Remove CDRs ListenAndServe method.
Pass the storDB connection directly to constructors instead of the
channel.
2024-12-12 11:55:14 +01:00
gezimbll
bb0116c543 added it test && loaders templates for ranking and trend profiles 2024-11-22 20:29:27 +01:00
ionutboangiu
4c8cf69f70 Auto-configure loader in test suite if needed 2024-11-07 15:38:37 +01:00
gezimbll
132a2b3bf9 rankings,trends: added implementation,services and tests 2024-11-04 19:03:21 +01:00
ionutboangiu
c895681980 Improve CoreSv1.Status API with more detailed metrics
- add new metrics (off by default)
- add Debug boolean option for full metric details
- add Timezone option for 'running_since' field
- update default metrics shown and their constants
- remove utils.GetStartTime(), now use process metrics
2024-11-03 13:19:45 +01:00
ionutboangiu
c7dbcaea03 Revise CPU/Memory profiling
CPU profiling changes:

cgr-engine.go:
- use filepath.Join instead of path.Join
- handle *CoreService.StopCPUProfiling error inside deferred function
- same with the error from *os.File.Close()

cores/core.go:
- StartCPUProfile now returns an *os.File (as opposed to an io.WriteCloser),
  because os.File.Stat is used beforehand to check if a handler of the file is
  already active and confirm the status of profiling.  Asserting the type would
  have worked as well.
- handle pprof.StartCPUProfile error and ensure file is closed before returning
- log file close error as a warning if it occurs
- return missing mandatory error with correct path field name ('DirPath')
- no need to check if fileCPU is nil for profiling status
  - pprof.StartCPUProfiling will return an error if profiling is already started
  - os.File.Close() will return ErrClosed if profiling is already stopped
- differentiate between calling StopCPUProfiling when profiling hasn't started
and when it was already stopped by returning appropriate errors

Memory profiling changes:

- merge StopChanMemProf with StopMemoryProfiling
- remove fileMEM and stopMemProf from struct and constructors
- add separate mutex for memory profiling, ensure thread safety
- handle all significant errors
- log error if StopMemoryProfiling fails during CoreS Shutdown
- ignore errors if profiling inactive in Shutdown and deferred Stop
- move validations inside V1 functions
- return error if StartMemoryProfiling already started
- return error if StopMemoryProfiling already stopped or never started
- close profiling loop on error, not the cgr-engine
- StopMemoryProfiling closes channel and profiling loop writes final profile
- rename Path to DirPath for mandatory field error
- rename memprof_nrfiles flag to memprof_maxfiles
- increase default memprof_interval
- consider MaxFiles <= 0 as unlimited
- move memory profiling logic after starting services
- use CoreService Start/StopMemoryProfiling in main
- remove final memory profile block (created by deferred Stop)
- convert MemProfiling to method on CoreService and rename to profileMemory
- use Ticker for recurrent actions instead of Timer
- compute mem_final.prof full path in StartMemoryProfiling
- suffix profile files with current time instead of numbers
- update dispatcher methods after changes
- move MemoryPrf from utils to cores, rename to MemoryProfilingParams
- add logs for starting/stopping profiling
- added the possibility to disable timestamps in the memory profile file names
  and use increments of 1 instead.

Other changes:

- improved integration tests for flags (now table tests)
- improved profiling integration tests
2024-11-01 15:59:39 +01:00
ionutboangiu
099f6023ee Improve engine setup helpers
- added hook support (executed after parsing config but before starting
  engine)
- renamed TestEnvironment.Setup -> TestEngine.Run as it represents the
  setup for a single cgr-engine instance
- replaced t.Log with t.Error for engine process kill error
- improved option comments

- added support for dynamic configuration for dbs
- ConfigJSON field can now be used to partially overwrite an existing
configuration
- extra cgr-engine flags can now be passed to the Run method
- added default db configs for mongo/internal
- implemented helper to load using cgr-loader
2024-10-23 21:11:25 +02:00
ionutboangiu
3e98e37db3 Revise NewRPCClient helper function 2024-10-23 21:11:25 +02:00
ionutboangiu
f26a0c2d0b Reduce client connection attempts to test engine status
200 -> 16

Previously, considering the fibonacci back off strategy, if engine failed to
start it would have tried to attempt connections for 2.862799e+33 years.

Now, the amount of attempts is 16, equivalent to around 2 and a half seconds.
Should be more than enough, considering that usually 6-7 attempts are enough.
2024-09-25 20:58:51 +02:00
ionutboangiu
e228dda013 Improve test setup helpers
- added hook support (executed after parsing config but before
starting engine)
- made db resets configurable
- merged config parsing helper with the main Setup function
- removed engineDelay parameter
- replaced t.Log with t.Error for engine process kill error
- improved option comments
2024-09-23 20:28:26 +02:00
gezimblliku
0f81b78321 updated trend profile && trends service implementation 2024-09-23 11:48:04 +02:00
ionutboangiu
bc89fe320e add tests for arith operations (AttributeS) 2024-09-05 20:46:40 +02:00
ionutboangiu
2f387b5a0e chore: remove unnecessary parentheses
gofmt -r '(a) -> a' -w **/*.go
2024-09-05 20:46:40 +02:00