Added test coverave + fixed some bugs with pubsub api methods.

This commit is contained in:
Kelvin Clement Mwinuka
2024-05-27 18:48:08 +08:00
parent 30b8b205a7
commit bb667cf7f7
10 changed files with 905 additions and 420 deletions

View File

@@ -1,148 +1,4 @@
mode: set
github.com/echovault/echovault/internal/aof/log/store.go:46.60,47.34 1 1
github.com/echovault/echovault/internal/aof/log/store.go:47.34,49.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:52.61,53.34 1 1
github.com/echovault/echovault/internal/aof/log/store.go:53.34,55.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:58.67,59.34 1 1
github.com/echovault/echovault/internal/aof/log/store.go:59.34,61.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:64.63,65.34 1 1
github.com/echovault/echovault/internal/aof/log/store.go:65.34,67.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:70.77,71.34 1 1
github.com/echovault/echovault/internal/aof/log/store.go:71.34,73.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:76.80,83.39 1 1
github.com/echovault/echovault/internal/aof/log/store.go:83.40,83.41 0 0
github.com/echovault/echovault/internal/aof/log/store.go:86.2,86.33 1 1
github.com/echovault/echovault/internal/aof/log/store.go:86.33,88.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:91.2,91.46 1 1
github.com/echovault/echovault/internal/aof/log/store.go:91.46,94.17 2 1
github.com/echovault/echovault/internal/aof/log/store.go:94.17,96.4 1 0
github.com/echovault/echovault/internal/aof/log/store.go:97.3,98.17 2 1
github.com/echovault/echovault/internal/aof/log/store.go:98.17,100.4 1 0
github.com/echovault/echovault/internal/aof/log/store.go:101.3,101.15 1 1
github.com/echovault/echovault/internal/aof/log/store.go:106.2,106.51 1 1
github.com/echovault/echovault/internal/aof/log/store.go:106.51,107.13 1 1
github.com/echovault/echovault/internal/aof/log/store.go:107.13,108.8 1 0
github.com/echovault/echovault/internal/aof/log/store.go:108.8,110.40 2 0
github.com/echovault/echovault/internal/aof/log/store.go:110.40,113.11 3 0
github.com/echovault/echovault/internal/aof/log/store.go:115.5,116.41 2 0
github.com/echovault/echovault/internal/aof/log/store.go:121.2,121.19 1 1
github.com/echovault/echovault/internal/aof/log/store.go:124.55,126.21 1 1
github.com/echovault/echovault/internal/aof/log/store.go:126.21,128.3 1 0
github.com/echovault/echovault/internal/aof/log/store.go:130.2,135.47 4 1
github.com/echovault/echovault/internal/aof/log/store.go:135.47,137.3 1 0
github.com/echovault/echovault/internal/aof/log/store.go:139.2,139.49 1 1
github.com/echovault/echovault/internal/aof/log/store.go:139.49,140.38 1 1
github.com/echovault/echovault/internal/aof/log/store.go:140.38,142.4 1 0
github.com/echovault/echovault/internal/aof/log/store.go:145.2,145.12 1 1
github.com/echovault/echovault/internal/aof/log/store.go:148.40,149.21 1 1
github.com/echovault/echovault/internal/aof/log/store.go:149.21,151.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:152.2,152.12 1 0
github.com/echovault/echovault/internal/aof/log/store.go:155.43,160.47 3 1
github.com/echovault/echovault/internal/aof/log/store.go:160.47,162.3 1 0
github.com/echovault/echovault/internal/aof/log/store.go:164.2,165.6 2 1
github.com/echovault/echovault/internal/aof/log/store.go:165.6,167.34 2 1
github.com/echovault/echovault/internal/aof/log/store.go:167.34,169.4 1 0
github.com/echovault/echovault/internal/aof/log/store.go:170.3,170.13 1 1
github.com/echovault/echovault/internal/aof/log/store.go:170.13,172.9 1 1
github.com/echovault/echovault/internal/aof/log/store.go:174.3,175.17 2 1
github.com/echovault/echovault/internal/aof/log/store.go:175.17,177.4 1 0
github.com/echovault/echovault/internal/aof/log/store.go:178.3,178.31 1 1
github.com/echovault/echovault/internal/aof/log/store.go:181.2,181.12 1 1
github.com/echovault/echovault/internal/aof/log/store.go:184.44,187.45 3 0
github.com/echovault/echovault/internal/aof/log/store.go:187.45,189.3 1 0
github.com/echovault/echovault/internal/aof/log/store.go:191.2,191.47 1 0
github.com/echovault/echovault/internal/aof/log/store.go:191.47,193.3 1 0
github.com/echovault/echovault/internal/aof/log/store.go:194.2,194.12 1 0
github.com/echovault/echovault/internal/aof/log/store.go:197.41,201.2 3 1
github.com/echovault/echovault/internal/aof/engine.go:50.56,51.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:51.30,53.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:56.57,57.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:57.30,59.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:62.59,63.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:63.30,65.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:68.58,69.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:69.30,71.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:74.59,75.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:75.30,77.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:80.82,81.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:81.30,83.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:86.89,87.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:87.30,89.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:92.73,93.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:93.30,95.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:98.82,99.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:99.30,101.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:104.78,105.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:105.30,107.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:110.69,118.29 1 1
github.com/echovault/echovault/internal/aof/engine.go:118.30,118.31 0 0
github.com/echovault/echovault/internal/aof/engine.go:119.30,119.31 0 0
github.com/echovault/echovault/internal/aof/engine.go:120.57,120.71 1 0
github.com/echovault/echovault/internal/aof/engine.go:121.63,121.64 0 0
github.com/echovault/echovault/internal/aof/engine.go:122.44,122.45 0 0
github.com/echovault/echovault/internal/aof/engine.go:127.2,127.33 1 1
github.com/echovault/echovault/internal/aof/engine.go:127.33,129.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:132.2,139.16 2 1
github.com/echovault/echovault/internal/aof/engine.go:139.16,141.3 1 0
github.com/echovault/echovault/internal/aof/engine.go:142.2,152.16 3 1
github.com/echovault/echovault/internal/aof/engine.go:152.16,154.3 1 0
github.com/echovault/echovault/internal/aof/engine.go:155.2,159.12 2 1
github.com/echovault/echovault/internal/aof/engine.go:159.12,160.7 1 1
github.com/echovault/echovault/internal/aof/engine.go:160.7,162.54 2 1
github.com/echovault/echovault/internal/aof/engine.go:162.54,164.5 1 0
github.com/echovault/echovault/internal/aof/engine.go:168.2,168.20 1 1
github.com/echovault/echovault/internal/aof/engine.go:171.52,173.2 1 1
github.com/echovault/echovault/internal/aof/engine.go:175.42,183.62 5 1
github.com/echovault/echovault/internal/aof/engine.go:183.62,185.3 1 0
github.com/echovault/echovault/internal/aof/engine.go:188.2,188.54 1 1
github.com/echovault/echovault/internal/aof/engine.go:188.54,190.3 1 0
github.com/echovault/echovault/internal/aof/engine.go:192.2,192.12 1 1
github.com/echovault/echovault/internal/aof/engine.go:195.39,196.55 1 1
github.com/echovault/echovault/internal/aof/engine.go:196.55,198.3 1 0
github.com/echovault/echovault/internal/aof/engine.go:199.2,199.53 1 1
github.com/echovault/echovault/internal/aof/engine.go:199.53,201.3 1 0
github.com/echovault/echovault/internal/aof/engine.go:202.2,202.12 1 1
github.com/echovault/echovault/internal/config/config.go:64.34,70.24 3 0
github.com/echovault/echovault/internal/config/config.go:70.24,72.35 2 0
github.com/echovault/echovault/internal/config/config.go:72.35,74.5 1 0
github.com/echovault/echovault/internal/config/config.go:75.4,75.22 1 0
github.com/echovault/echovault/internal/config/config.go:75.22,77.5 1 0
github.com/echovault/echovault/internal/config/config.go:78.4,79.14 2 0
github.com/echovault/echovault/internal/config/config.go:82.2,82.115 1 0
github.com/echovault/echovault/internal/config/config.go:82.115,85.3 2 0
github.com/echovault/echovault/internal/config/config.go:87.2,90.29 2 0
github.com/echovault/echovault/internal/config/config.go:90.29,91.86 1 0
github.com/echovault/echovault/internal/config/config.go:91.86,93.5 1 0
github.com/echovault/echovault/internal/config/config.go:93.7,95.5 1 0
github.com/echovault/echovault/internal/config/config.go:96.4,97.14 2 0
github.com/echovault/echovault/internal/config/config.go:100.2,103.59 2 0
github.com/echovault/echovault/internal/config/config.go:103.59,105.17 2 0
github.com/echovault/echovault/internal/config/config.go:105.17,107.4 1 0
github.com/echovault/echovault/internal/config/config.go:108.3,109.13 2 0
github.com/echovault/echovault/internal/config/config.go:112.2,121.88 2 0
github.com/echovault/echovault/internal/config/config.go:121.88,128.23 3 0
github.com/echovault/echovault/internal/config/config.go:128.23,130.5 1 0
github.com/echovault/echovault/internal/config/config.go:131.4,132.14 2 0
github.com/echovault/echovault/internal/config/config.go:135.2,139.24 2 0
github.com/echovault/echovault/internal/config/config.go:139.24,140.36 1 0
github.com/echovault/echovault/internal/config/config.go:140.36,142.5 1 0
github.com/echovault/echovault/internal/config/config.go:143.4,144.14 2 0
github.com/echovault/echovault/internal/config/config.go:147.2,219.22 25 0
github.com/echovault/echovault/internal/config/config.go:219.22,221.45 1 0
github.com/echovault/echovault/internal/config/config.go:221.45,222.14 1 0
github.com/echovault/echovault/internal/config/config.go:223.9,224.17 1 0
github.com/echovault/echovault/internal/config/config.go:224.17,225.36 1 0
github.com/echovault/echovault/internal/config/config.go:225.36,227.6 1 0
github.com/echovault/echovault/internal/config/config.go:230.4,232.22 2 0
github.com/echovault/echovault/internal/config/config.go:232.22,233.59 1 0
github.com/echovault/echovault/internal/config/config.go:233.59,235.6 1 0
github.com/echovault/echovault/internal/config/config.go:238.4,238.39 1 0
github.com/echovault/echovault/internal/config/config.go:238.39,239.59 1 0
github.com/echovault/echovault/internal/config/config.go:239.59,241.6 1 0
github.com/echovault/echovault/internal/config/config.go:247.2,249.45 2 0
github.com/echovault/echovault/internal/config/config.go:249.45,251.3 1 0
github.com/echovault/echovault/internal/config/config.go:253.2,253.18 1 0
github.com/echovault/echovault/internal/config/default.go:8.29,38.2 1 0
github.com/echovault/echovault/internal/aof/preamble/store.go:45.62,46.36 1 1
github.com/echovault/echovault/internal/aof/preamble/store.go:46.36,48.3 1 1
github.com/echovault/echovault/internal/aof/preamble/store.go:51.71,52.36 1 0
@@ -198,13 +54,102 @@ github.com/echovault/echovault/internal/aof/preamble/store.go:185.43,187.4 1 1
github.com/echovault/echovault/internal/aof/preamble/store.go:189.2,189.35 1 1
github.com/echovault/echovault/internal/aof/preamble/store.go:189.35,191.3 1 1
github.com/echovault/echovault/internal/aof/preamble/store.go:192.2,192.14 1 1
github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 0
github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 0
github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0
github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0
github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0
github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0
github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0
github.com/echovault/echovault/internal/config/config.go:64.34,70.24 3 0
github.com/echovault/echovault/internal/config/config.go:70.24,72.35 2 0
github.com/echovault/echovault/internal/config/config.go:72.35,74.5 1 0
github.com/echovault/echovault/internal/config/config.go:75.4,75.22 1 0
github.com/echovault/echovault/internal/config/config.go:75.22,77.5 1 0
github.com/echovault/echovault/internal/config/config.go:78.4,79.14 2 0
github.com/echovault/echovault/internal/config/config.go:82.2,82.115 1 0
github.com/echovault/echovault/internal/config/config.go:82.115,85.3 2 0
github.com/echovault/echovault/internal/config/config.go:87.2,90.29 2 0
github.com/echovault/echovault/internal/config/config.go:90.29,91.86 1 0
github.com/echovault/echovault/internal/config/config.go:91.86,93.5 1 0
github.com/echovault/echovault/internal/config/config.go:93.7,95.5 1 0
github.com/echovault/echovault/internal/config/config.go:96.4,97.14 2 0
github.com/echovault/echovault/internal/config/config.go:100.2,103.59 2 0
github.com/echovault/echovault/internal/config/config.go:103.59,105.17 2 0
github.com/echovault/echovault/internal/config/config.go:105.17,107.4 1 0
github.com/echovault/echovault/internal/config/config.go:108.3,109.13 2 0
github.com/echovault/echovault/internal/config/config.go:112.2,121.88 2 0
github.com/echovault/echovault/internal/config/config.go:121.88,128.23 3 0
github.com/echovault/echovault/internal/config/config.go:128.23,130.5 1 0
github.com/echovault/echovault/internal/config/config.go:131.4,132.14 2 0
github.com/echovault/echovault/internal/config/config.go:135.2,139.24 2 0
github.com/echovault/echovault/internal/config/config.go:139.24,140.36 1 0
github.com/echovault/echovault/internal/config/config.go:140.36,142.5 1 0
github.com/echovault/echovault/internal/config/config.go:143.4,144.14 2 0
github.com/echovault/echovault/internal/config/config.go:147.2,219.22 25 0
github.com/echovault/echovault/internal/config/config.go:219.22,221.45 1 0
github.com/echovault/echovault/internal/config/config.go:221.45,222.14 1 0
github.com/echovault/echovault/internal/config/config.go:223.9,224.17 1 0
github.com/echovault/echovault/internal/config/config.go:224.17,225.36 1 0
github.com/echovault/echovault/internal/config/config.go:225.36,227.6 1 0
github.com/echovault/echovault/internal/config/config.go:230.4,232.22 2 0
github.com/echovault/echovault/internal/config/config.go:232.22,233.59 1 0
github.com/echovault/echovault/internal/config/config.go:233.59,235.6 1 0
github.com/echovault/echovault/internal/config/config.go:238.4,238.39 1 0
github.com/echovault/echovault/internal/config/config.go:238.39,239.59 1 0
github.com/echovault/echovault/internal/config/config.go:239.59,241.6 1 0
github.com/echovault/echovault/internal/config/config.go:247.2,249.45 2 0
github.com/echovault/echovault/internal/config/config.go:249.45,251.3 1 0
github.com/echovault/echovault/internal/config/config.go:253.2,253.18 1 0
github.com/echovault/echovault/internal/config/default.go:8.29,38.2 1 0
github.com/echovault/echovault/internal/aof/log/store.go:46.60,47.34 1 1
github.com/echovault/echovault/internal/aof/log/store.go:47.34,49.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:52.61,53.34 1 1
github.com/echovault/echovault/internal/aof/log/store.go:53.34,55.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:58.67,59.34 1 1
github.com/echovault/echovault/internal/aof/log/store.go:59.34,61.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:64.63,65.34 1 1
github.com/echovault/echovault/internal/aof/log/store.go:65.34,67.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:70.77,71.34 1 1
github.com/echovault/echovault/internal/aof/log/store.go:71.34,73.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:76.80,83.39 1 1
github.com/echovault/echovault/internal/aof/log/store.go:83.40,83.41 0 0
github.com/echovault/echovault/internal/aof/log/store.go:86.2,86.33 1 1
github.com/echovault/echovault/internal/aof/log/store.go:86.33,88.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:91.2,91.46 1 1
github.com/echovault/echovault/internal/aof/log/store.go:91.46,94.17 2 1
github.com/echovault/echovault/internal/aof/log/store.go:94.17,96.4 1 0
github.com/echovault/echovault/internal/aof/log/store.go:97.3,98.17 2 1
github.com/echovault/echovault/internal/aof/log/store.go:98.17,100.4 1 0
github.com/echovault/echovault/internal/aof/log/store.go:101.3,101.15 1 1
github.com/echovault/echovault/internal/aof/log/store.go:106.2,106.51 1 1
github.com/echovault/echovault/internal/aof/log/store.go:106.51,107.13 1 1
github.com/echovault/echovault/internal/aof/log/store.go:107.13,108.8 1 1
github.com/echovault/echovault/internal/aof/log/store.go:108.8,110.40 2 1
github.com/echovault/echovault/internal/aof/log/store.go:110.40,113.11 3 0
github.com/echovault/echovault/internal/aof/log/store.go:115.5,116.41 2 1
github.com/echovault/echovault/internal/aof/log/store.go:121.2,121.19 1 1
github.com/echovault/echovault/internal/aof/log/store.go:124.55,126.21 1 1
github.com/echovault/echovault/internal/aof/log/store.go:126.21,128.3 1 0
github.com/echovault/echovault/internal/aof/log/store.go:130.2,135.47 4 1
github.com/echovault/echovault/internal/aof/log/store.go:135.47,137.3 1 0
github.com/echovault/echovault/internal/aof/log/store.go:139.2,139.49 1 1
github.com/echovault/echovault/internal/aof/log/store.go:139.49,140.38 1 1
github.com/echovault/echovault/internal/aof/log/store.go:140.38,142.4 1 0
github.com/echovault/echovault/internal/aof/log/store.go:145.2,145.12 1 1
github.com/echovault/echovault/internal/aof/log/store.go:148.40,149.21 1 1
github.com/echovault/echovault/internal/aof/log/store.go:149.21,151.3 1 1
github.com/echovault/echovault/internal/aof/log/store.go:152.2,152.12 1 0
github.com/echovault/echovault/internal/aof/log/store.go:155.43,160.47 3 1
github.com/echovault/echovault/internal/aof/log/store.go:160.47,162.3 1 0
github.com/echovault/echovault/internal/aof/log/store.go:164.2,165.6 2 1
github.com/echovault/echovault/internal/aof/log/store.go:165.6,167.34 2 1
github.com/echovault/echovault/internal/aof/log/store.go:167.34,169.4 1 0
github.com/echovault/echovault/internal/aof/log/store.go:170.3,170.13 1 1
github.com/echovault/echovault/internal/aof/log/store.go:170.13,172.9 1 1
github.com/echovault/echovault/internal/aof/log/store.go:174.3,175.17 2 1
github.com/echovault/echovault/internal/aof/log/store.go:175.17,177.4 1 0
github.com/echovault/echovault/internal/aof/log/store.go:178.3,178.31 1 1
github.com/echovault/echovault/internal/aof/log/store.go:181.2,181.12 1 1
github.com/echovault/echovault/internal/aof/log/store.go:184.44,187.45 3 0
github.com/echovault/echovault/internal/aof/log/store.go:187.45,189.3 1 0
github.com/echovault/echovault/internal/aof/log/store.go:191.2,191.47 1 0
github.com/echovault/echovault/internal/aof/log/store.go:191.47,193.3 1 0
github.com/echovault/echovault/internal/aof/log/store.go:194.2,194.12 1 0
github.com/echovault/echovault/internal/aof/log/store.go:197.41,201.2 3 1
github.com/echovault/echovault/internal/eviction/lfu.go:35.29,42.2 3 1
github.com/echovault/echovault/internal/eviction/lfu.go:44.34,46.2 1 1
github.com/echovault/echovault/internal/eviction/lfu.go:48.44,50.54 1 1
@@ -239,6 +184,54 @@ github.com/echovault/echovault/internal/eviction/lru.go:92.73,94.3 1 0
github.com/echovault/echovault/internal/eviction/lru.go:95.2,95.19 1 0
github.com/echovault/echovault/internal/eviction/lru.go:95.19,97.3 1 0
github.com/echovault/echovault/internal/eviction/lru.go:100.50,103.2 2 1
github.com/echovault/echovault/internal/aof/engine.go:50.56,51.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:51.30,53.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:56.57,57.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:57.30,59.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:62.59,63.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:63.30,65.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:68.58,69.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:69.30,71.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:74.59,75.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:75.30,77.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:80.82,81.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:81.30,83.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:86.89,87.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:87.30,89.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:92.73,93.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:93.30,95.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:98.82,99.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:99.30,101.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:104.78,105.30 1 1
github.com/echovault/echovault/internal/aof/engine.go:105.30,107.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:110.69,118.29 1 1
github.com/echovault/echovault/internal/aof/engine.go:118.30,118.31 0 0
github.com/echovault/echovault/internal/aof/engine.go:119.30,119.31 0 0
github.com/echovault/echovault/internal/aof/engine.go:120.57,120.71 1 0
github.com/echovault/echovault/internal/aof/engine.go:121.63,121.64 0 0
github.com/echovault/echovault/internal/aof/engine.go:122.44,122.45 0 0
github.com/echovault/echovault/internal/aof/engine.go:127.2,127.33 1 1
github.com/echovault/echovault/internal/aof/engine.go:127.33,129.3 1 1
github.com/echovault/echovault/internal/aof/engine.go:132.2,139.16 2 1
github.com/echovault/echovault/internal/aof/engine.go:139.16,141.3 1 0
github.com/echovault/echovault/internal/aof/engine.go:142.2,152.16 3 1
github.com/echovault/echovault/internal/aof/engine.go:152.16,154.3 1 0
github.com/echovault/echovault/internal/aof/engine.go:155.2,159.12 2 1
github.com/echovault/echovault/internal/aof/engine.go:159.12,160.7 1 1
github.com/echovault/echovault/internal/aof/engine.go:160.7,162.54 2 1
github.com/echovault/echovault/internal/aof/engine.go:162.54,164.5 1 0
github.com/echovault/echovault/internal/aof/engine.go:168.2,168.20 1 1
github.com/echovault/echovault/internal/aof/engine.go:171.52,173.2 1 1
github.com/echovault/echovault/internal/aof/engine.go:175.42,183.62 5 1
github.com/echovault/echovault/internal/aof/engine.go:183.62,185.3 1 0
github.com/echovault/echovault/internal/aof/engine.go:188.2,188.54 1 1
github.com/echovault/echovault/internal/aof/engine.go:188.54,190.3 1 0
github.com/echovault/echovault/internal/aof/engine.go:192.2,192.12 1 1
github.com/echovault/echovault/internal/aof/engine.go:195.39,196.55 1 1
github.com/echovault/echovault/internal/aof/engine.go:196.55,198.3 1 0
github.com/echovault/echovault/internal/aof/engine.go:199.2,199.53 1 1
github.com/echovault/echovault/internal/aof/engine.go:199.53,201.3 1 0
github.com/echovault/echovault/internal/aof/engine.go:202.2,202.12 1 1
github.com/echovault/echovault/internal/modules/acl/acl.go:52.40,57.24 3 1
github.com/echovault/echovault/internal/modules/acl/acl.go:57.24,65.3 2 1
github.com/echovault/echovault/internal/modules/acl/acl.go:68.2,68.28 1 1
@@ -1408,7 +1401,7 @@ github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:64.10,66.5 1 1
github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:67.4,68.31 2 1
github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:68.31,73.20 1 1
github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:73.20,75.6 1 0
github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:77.4,77.46 1 1
github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:76.5,76.47 1 1
github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:78.9,80.47 1 1
github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:80.47,85.20 1 1
github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:85.20,87.6 1 0
@@ -1475,6 +1468,99 @@ github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:263.2,263.20 1
github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:266.47,271.38 4 1
github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:271.38,273.3 1 1
github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:275.2,275.17 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:27.78,33.29 4 1
github.com/echovault/echovault/internal/modules/admin/commands.go:33.29,34.54 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:34.54,40.42 4 1
github.com/echovault/echovault/internal/modules/admin/commands.go:40.42,42.5 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:44.4,47.12 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:50.3,50.36 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:50.36,57.43 5 1
github.com/echovault/echovault/internal/modules/admin/commands.go:57.43,59.5 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:61.4,63.21 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:67.2,69.25 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:72.76,76.35 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:76.35,77.65 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:77.65,78.41 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:78.41,80.5 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:81.4,81.12 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:83.3,83.13 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:86.2,86.51 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:89.75,90.29 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:91.9,96.36 4 1
github.com/echovault/echovault/internal/modules/admin/commands.go:96.36,97.66 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:97.66,98.52 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:98.52,102.6 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:103.5,103.13 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:105.4,106.14 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:108.3,109.26 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:111.9,115.56 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:115.56,117.4 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:118.3,118.53 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:118.53,122.37 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:122.37,123.67 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:123.67,124.53 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:124.53,125.59 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:125.59,129.8 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:131.6,131.14 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:133.5,133.54 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:133.54,136.6 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:138.9,138.61 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:138.61,142.37 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:142.37,143.67 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:143.67,144.53 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:144.53,146.24 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:146.24,149.8 2 0
github.com/echovault/echovault/internal/modules/admin/commands.go:151.6,151.14 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:153.5,153.33 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:153.33,156.6 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:158.9,158.60 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:158.60,162.37 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:162.37,163.67 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:163.67,164.53 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:164.53,165.55 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:165.55,169.8 3 0
github.com/echovault/echovault/internal/modules/admin/commands.go:171.6,171.14 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:173.5,173.50 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:173.50,176.6 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:178.9,180.4 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:181.3,182.26 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:183.10,184.54 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:188.75,190.2 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:192.36,200.84 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:200.84,204.5 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:213.84,217.5 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:225.86,229.7 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:238.86,242.7 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:252.86,256.7 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:267.84,271.5 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:272.73,273.49 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:273.49,275.6 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:276.5,276.45 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:285.84,289.5 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:290.73,292.18 2 0
github.com/echovault/echovault/internal/modules/admin/commands.go:292.18,294.6 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:295.5,295.53 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:304.84,308.5 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:309.73,310.47 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:310.47,312.6 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:313.5,313.45 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:321.84,325.5 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:335.86,339.7 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:340.75,341.34 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:341.34,343.8 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:344.7,345.34 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:345.34,347.8 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:348.7,348.75 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:348.75,350.8 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:351.7,351.47 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:361.86,365.7 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:366.75,367.35 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:367.35,369.8 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:370.7,371.47 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:380.86,384.7 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:385.75,388.38 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:388.38,390.8 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:391.7,391.30 1 1
github.com/echovault/echovault/internal/modules/set/commands.go:26.68,28.16 2 1
github.com/echovault/echovault/internal/modules/set/commands.go:28.16,30.3 1 0
github.com/echovault/echovault/internal/modules/set/commands.go:32.2,37.16 4 1
@@ -1767,99 +1853,6 @@ github.com/echovault/echovault/internal/modules/set/set.go:184.31,185.19 1 1
github.com/echovault/echovault/internal/modules/set/set.go:186.9,187.17 1 1
github.com/echovault/echovault/internal/modules/set/set.go:188.9,191.15 3 1
github.com/echovault/echovault/internal/modules/set/set.go:192.10,195.28 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:27.78,33.29 4 1
github.com/echovault/echovault/internal/modules/admin/commands.go:33.29,34.54 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:34.54,40.42 4 1
github.com/echovault/echovault/internal/modules/admin/commands.go:40.42,42.5 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:44.4,47.12 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:50.3,50.36 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:50.36,57.43 5 1
github.com/echovault/echovault/internal/modules/admin/commands.go:57.43,59.5 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:61.4,63.21 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:67.2,69.25 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:72.76,76.35 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:76.35,77.65 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:77.65,78.41 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:78.41,80.5 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:81.4,81.12 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:83.3,83.13 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:86.2,86.51 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:89.75,90.29 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:91.9,96.36 4 1
github.com/echovault/echovault/internal/modules/admin/commands.go:96.36,97.66 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:97.66,98.52 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:98.52,102.6 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:103.5,103.13 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:105.4,106.14 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:108.3,109.26 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:111.9,115.56 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:115.56,117.4 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:118.3,118.53 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:118.53,122.37 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:122.37,123.67 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:123.67,124.53 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:124.53,125.59 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:125.59,129.8 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:131.6,131.14 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:133.5,133.54 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:133.54,136.6 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:138.9,138.61 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:138.61,142.37 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:142.37,143.67 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:143.67,144.53 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:144.53,146.24 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:146.24,149.8 2 0
github.com/echovault/echovault/internal/modules/admin/commands.go:151.6,151.14 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:153.5,153.33 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:153.33,156.6 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:158.9,158.60 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:158.60,162.37 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:162.37,163.67 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:163.67,164.53 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:164.53,165.55 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:165.55,169.8 3 0
github.com/echovault/echovault/internal/modules/admin/commands.go:171.6,171.14 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:173.5,173.50 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:173.50,176.6 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:178.9,180.4 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:181.3,182.26 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:183.10,184.54 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:188.75,190.2 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:192.36,200.84 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:200.84,204.5 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:213.84,217.5 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:225.86,229.7 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:238.86,242.7 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:252.86,256.7 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:267.84,271.5 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:272.73,273.49 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:273.49,275.6 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:276.5,276.45 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:285.84,289.5 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:290.73,292.18 2 0
github.com/echovault/echovault/internal/modules/admin/commands.go:292.18,294.6 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:295.5,295.53 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:304.84,308.5 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:309.73,310.47 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:310.47,312.6 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:313.5,313.45 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:321.84,325.5 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:335.86,339.7 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:340.75,341.34 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:341.34,343.8 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:344.7,345.34 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:345.34,347.8 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:348.7,348.75 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:348.75,350.8 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:351.7,351.47 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:361.86,365.7 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:366.75,367.35 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:367.35,369.8 1 0
github.com/echovault/echovault/internal/modules/admin/commands.go:370.7,371.47 2 1
github.com/echovault/echovault/internal/modules/admin/commands.go:380.86,384.7 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:385.75,388.38 3 1
github.com/echovault/echovault/internal/modules/admin/commands.go:388.38,390.8 1 1
github.com/echovault/echovault/internal/modules/admin/commands.go:391.7,391.30 1 1
github.com/echovault/echovault/internal/modules/sorted_set/commands.go:29.68,31.16 2 1
github.com/echovault/echovault/internal/modules/sorted_set/commands.go:31.16,33.3 1 0
github.com/echovault/echovault/internal/modules/sorted_set/commands.go:35.2,45.43 8 1
@@ -2921,70 +2914,71 @@ github.com/echovault/echovault/echovault/api_acl.go:364.10,365.31 1 0
github.com/echovault/echovault/echovault/api_acl.go:368.2,369.16 2 0
github.com/echovault/echovault/echovault/api_acl.go:369.16,371.3 1 0
github.com/echovault/echovault/echovault/api_acl.go:373.2,374.40 2 0
github.com/echovault/echovault/echovault/api_acl.go:380.50,382.16 2 1
github.com/echovault/echovault/echovault/api_acl.go:380.50,382.16 2 0
github.com/echovault/echovault/echovault/api_acl.go:382.16,384.3 1 0
github.com/echovault/echovault/echovault/api_acl.go:385.2,386.40 2 1
github.com/echovault/echovault/echovault/api_admin.go:142.84,145.9 2 0
github.com/echovault/echovault/echovault/api_admin.go:146.28,147.71 1 0
github.com/echovault/echovault/echovault/api_admin.go:148.29,149.73 1 0
github.com/echovault/echovault/echovault/api_admin.go:150.28,151.71 1 0
github.com/echovault/echovault/echovault/api_admin.go:154.2,155.16 2 0
github.com/echovault/echovault/echovault/api_admin.go:155.16,157.3 1 0
github.com/echovault/echovault/echovault/api_admin.go:159.2,159.45 1 0
github.com/echovault/echovault/echovault/api_admin.go:165.54,167.16 2 0
github.com/echovault/echovault/echovault/api_admin.go:167.16,169.3 1 0
github.com/echovault/echovault/echovault/api_admin.go:170.2,170.41 1 0
github.com/echovault/echovault/echovault/api_admin.go:174.49,176.16 2 0
github.com/echovault/echovault/echovault/api_admin.go:176.16,178.3 1 0
github.com/echovault/echovault/echovault/api_admin.go:179.2,179.40 1 0
github.com/echovault/echovault/echovault/api_admin.go:183.50,185.16 2 0
github.com/echovault/echovault/echovault/api_admin.go:185.16,187.3 1 0
github.com/echovault/echovault/echovault/api_admin.go:188.2,188.41 1 0
github.com/echovault/echovault/echovault/api_admin.go:192.55,194.16 2 0
github.com/echovault/echovault/echovault/api_admin.go:194.16,196.3 1 0
github.com/echovault/echovault/echovault/api_admin.go:197.2,197.40 1 0
github.com/echovault/echovault/echovault/api_admin.go:209.67,213.36 3 1
github.com/echovault/echovault/echovault/api_admin.go:213.36,214.52 1 1
github.com/echovault/echovault/echovault/api_admin.go:214.52,216.4 1 0
github.com/echovault/echovault/echovault/api_admin.go:219.2,219.63 1 1
github.com/echovault/echovault/echovault/api_admin.go:219.63,224.32 1 1
github.com/echovault/echovault/echovault/api_admin.go:224.32,227.44 2 1
github.com/echovault/echovault/echovault/api_admin.go:227.44,229.6 1 0
github.com/echovault/echovault/echovault/api_admin.go:230.5,230.16 1 1
github.com/echovault/echovault/echovault/api_admin.go:234.111,236.19 2 0
github.com/echovault/echovault/echovault/api_admin.go:236.19,238.6 1 0
github.com/echovault/echovault/echovault/api_admin.go:239.5,243.11 1 0
github.com/echovault/echovault/echovault/api_admin.go:245.94,253.5 1 1
github.com/echovault/echovault/echovault/api_admin.go:255.3,255.13 1 1
github.com/echovault/echovault/echovault/api_admin.go:259.2,262.31 1 1
github.com/echovault/echovault/echovault/api_admin.go:262.31,265.43 2 1
github.com/echovault/echovault/echovault/api_admin.go:265.43,267.5 1 0
github.com/echovault/echovault/echovault/api_admin.go:268.4,268.15 1 1
github.com/echovault/echovault/echovault/api_admin.go:272.83,274.4 1 0
github.com/echovault/echovault/echovault/api_admin.go:275.71,275.90 1 0
github.com/echovault/echovault/echovault/api_admin.go:279.2,279.40 1 1
github.com/echovault/echovault/echovault/api_admin.go:279.40,281.92 1 1
github.com/echovault/echovault/echovault/api_admin.go:281.92,283.4 1 1
github.com/echovault/echovault/echovault/api_admin.go:283.6,284.12 1 0
github.com/echovault/echovault/echovault/api_admin.go:286.3,289.32 1 1
github.com/echovault/echovault/echovault/api_admin.go:289.32,292.39 2 1
github.com/echovault/echovault/echovault/api_admin.go:292.39,294.6 1 0
github.com/echovault/echovault/echovault/api_admin.go:295.5,295.16 1 1
github.com/echovault/echovault/echovault/api_admin.go:299.111,301.19 2 0
github.com/echovault/echovault/echovault/api_admin.go:301.19,303.6 1 0
github.com/echovault/echovault/echovault/api_admin.go:304.5,308.11 1 0
github.com/echovault/echovault/echovault/api_admin.go:310.94,318.5 1 1
github.com/echovault/echovault/echovault/api_admin.go:322.2,324.12 2 1
github.com/echovault/echovault/echovault/api_admin.go:350.76,352.2 1 1
github.com/echovault/echovault/echovault/api_admin.go:368.59,372.22 3 1
github.com/echovault/echovault/echovault/api_admin.go:373.9,375.86 1 1
github.com/echovault/echovault/echovault/api_admin.go:375.86,377.4 1 1
github.com/echovault/echovault/echovault/api_admin.go:378.9,380.45 1 1
github.com/echovault/echovault/echovault/api_admin.go:380.45,381.66 1 1
github.com/echovault/echovault/echovault/api_admin.go:381.66,382.13 1 1
github.com/echovault/echovault/echovault/api_admin.go:384.4,384.88 1 1
github.com/echovault/echovault/echovault/api_admin.go:384.88,385.122 1 1
github.com/echovault/echovault/echovault/api_admin.go:385.122,387.6 1 1
github.com/echovault/echovault/echovault/api_acl.go:385.2,386.40 2 0
github.com/echovault/echovault/echovault/api_admin.go:142.87,145.22 2 1
github.com/echovault/echovault/echovault/api_admin.go:145.22,146.10 1 1
github.com/echovault/echovault/echovault/api_admin.go:147.32,148.75 1 1
github.com/echovault/echovault/echovault/api_admin.go:149.33,150.77 1 1
github.com/echovault/echovault/echovault/api_admin.go:151.32,152.75 1 1
github.com/echovault/echovault/echovault/api_admin.go:156.2,157.16 2 1
github.com/echovault/echovault/echovault/api_admin.go:157.16,159.3 1 0
github.com/echovault/echovault/echovault/api_admin.go:161.2,161.45 1 1
github.com/echovault/echovault/echovault/api_admin.go:167.54,169.16 2 1
github.com/echovault/echovault/echovault/api_admin.go:169.16,171.3 1 0
github.com/echovault/echovault/echovault/api_admin.go:172.2,172.41 1 1
github.com/echovault/echovault/echovault/api_admin.go:179.47,181.16 2 1
github.com/echovault/echovault/echovault/api_admin.go:181.16,183.3 1 0
github.com/echovault/echovault/echovault/api_admin.go:184.2,185.42 2 1
github.com/echovault/echovault/echovault/api_admin.go:189.50,191.16 2 1
github.com/echovault/echovault/echovault/api_admin.go:191.16,193.3 1 0
github.com/echovault/echovault/echovault/api_admin.go:194.2,194.41 1 1
github.com/echovault/echovault/echovault/api_admin.go:198.55,200.16 2 0
github.com/echovault/echovault/echovault/api_admin.go:200.16,202.3 1 0
github.com/echovault/echovault/echovault/api_admin.go:203.2,203.40 1 0
github.com/echovault/echovault/echovault/api_admin.go:215.67,219.36 3 1
github.com/echovault/echovault/echovault/api_admin.go:219.36,220.52 1 1
github.com/echovault/echovault/echovault/api_admin.go:220.52,222.4 1 0
github.com/echovault/echovault/echovault/api_admin.go:225.2,225.63 1 1
github.com/echovault/echovault/echovault/api_admin.go:225.63,230.32 1 1
github.com/echovault/echovault/echovault/api_admin.go:230.32,233.44 2 1
github.com/echovault/echovault/echovault/api_admin.go:233.44,235.6 1 0
github.com/echovault/echovault/echovault/api_admin.go:236.5,236.16 1 1
github.com/echovault/echovault/echovault/api_admin.go:240.111,242.19 2 0
github.com/echovault/echovault/echovault/api_admin.go:242.19,244.6 1 0
github.com/echovault/echovault/echovault/api_admin.go:245.5,249.11 1 0
github.com/echovault/echovault/echovault/api_admin.go:251.94,259.5 1 1
github.com/echovault/echovault/echovault/api_admin.go:261.3,261.13 1 1
github.com/echovault/echovault/echovault/api_admin.go:265.2,268.31 1 1
github.com/echovault/echovault/echovault/api_admin.go:268.31,271.43 2 1
github.com/echovault/echovault/echovault/api_admin.go:271.43,273.5 1 0
github.com/echovault/echovault/echovault/api_admin.go:274.4,274.15 1 1
github.com/echovault/echovault/echovault/api_admin.go:278.83,280.4 1 0
github.com/echovault/echovault/echovault/api_admin.go:281.71,281.90 1 0
github.com/echovault/echovault/echovault/api_admin.go:285.2,285.40 1 1
github.com/echovault/echovault/echovault/api_admin.go:285.40,287.92 1 1
github.com/echovault/echovault/echovault/api_admin.go:287.92,289.4 1 1
github.com/echovault/echovault/echovault/api_admin.go:289.6,290.12 1 0
github.com/echovault/echovault/echovault/api_admin.go:292.3,295.32 1 1
github.com/echovault/echovault/echovault/api_admin.go:295.32,298.39 2 1
github.com/echovault/echovault/echovault/api_admin.go:298.39,300.6 1 0
github.com/echovault/echovault/echovault/api_admin.go:301.5,301.16 1 1
github.com/echovault/echovault/echovault/api_admin.go:305.111,307.19 2 0
github.com/echovault/echovault/echovault/api_admin.go:307.19,309.6 1 0
github.com/echovault/echovault/echovault/api_admin.go:310.5,314.11 1 0
github.com/echovault/echovault/echovault/api_admin.go:316.94,324.5 1 1
github.com/echovault/echovault/echovault/api_admin.go:328.2,330.12 2 1
github.com/echovault/echovault/echovault/api_admin.go:356.76,358.2 1 1
github.com/echovault/echovault/echovault/api_admin.go:374.59,378.22 3 1
github.com/echovault/echovault/echovault/api_admin.go:379.9,381.86 1 1
github.com/echovault/echovault/echovault/api_admin.go:381.86,383.4 1 1
github.com/echovault/echovault/echovault/api_admin.go:384.9,386.45 1 1
github.com/echovault/echovault/echovault/api_admin.go:386.45,387.66 1 1
github.com/echovault/echovault/echovault/api_admin.go:387.66,388.13 1 1
github.com/echovault/echovault/echovault/api_admin.go:390.4,390.88 1 1
github.com/echovault/echovault/echovault/api_admin.go:390.88,391.122 1 1
github.com/echovault/echovault/echovault/api_admin.go:391.122,393.6 1 1
github.com/echovault/echovault/echovault/api_generic.go:88.91,91.9 2 1
github.com/echovault/echovault/echovault/api_generic.go:92.18,93.26 1 1
github.com/echovault/echovault/echovault/api_generic.go:94.18,95.26 1 1
@@ -3075,9 +3069,9 @@ github.com/echovault/echovault/echovault/api_hash.go:79.36,81.3 1 1
github.com/echovault/echovault/echovault/api_hash.go:83.2,84.16 2 1
github.com/echovault/echovault/echovault/api_hash.go:84.16,86.3 1 0
github.com/echovault/echovault/echovault/api_hash.go:88.2,88.41 1 1
github.com/echovault/echovault/echovault/api_hash.go:104.79,112.16 2 0
github.com/echovault/echovault/echovault/api_hash.go:112.16,114.3 1 0
github.com/echovault/echovault/echovault/api_hash.go:115.2,115.45 1 0
github.com/echovault/echovault/echovault/api_hash.go:104.79,112.16 2 1
github.com/echovault/echovault/echovault/api_hash.go:112.16,114.3 1 1
github.com/echovault/echovault/echovault/api_hash.go:115.2,115.45 1 1
github.com/echovault/echovault/echovault/api_hash.go:132.79,136.16 3 1
github.com/echovault/echovault/echovault/api_hash.go:136.16,138.3 1 1
github.com/echovault/echovault/echovault/api_hash.go:140.2,140.46 1 1
@@ -3152,54 +3146,56 @@ github.com/echovault/echovault/echovault/api_list.go:294.2,294.41 1 1
github.com/echovault/echovault/echovault/api_list.go:310.76,313.16 3 1
github.com/echovault/echovault/echovault/api_list.go:313.16,315.3 1 1
github.com/echovault/echovault/echovault/api_list.go:316.2,316.41 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:50.86,52.24 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:52.24,54.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:57.2,59.36 3 0
github.com/echovault/echovault/echovault/api_pubsub.go:59.36,65.3 2 0
github.com/echovault/echovault/echovault/api_pubsub.go:68.2,69.12 2 0
github.com/echovault/echovault/echovault/api_pubsub.go:69.12,71.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:73.2,73.25 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:73.25,78.33 4 0
github.com/echovault/echovault/echovault/api_pubsub.go:78.33,80.4 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:82.3,82.13 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:93.70,94.24 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:94.24,96.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:98.2,98.36 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:98.36,100.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:102.2,103.115 2 0
github.com/echovault/echovault/echovault/api_pubsub.go:116.87,118.24 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:118.24,120.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:123.2,125.36 3 0
github.com/echovault/echovault/echovault/api_pubsub.go:125.36,131.3 2 0
github.com/echovault/echovault/echovault/api_pubsub.go:134.2,135.12 2 0
github.com/echovault/echovault/echovault/api_pubsub.go:135.12,137.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:139.2,139.25 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:139.25,144.33 4 0
github.com/echovault/echovault/echovault/api_pubsub.go:144.33,146.4 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:148.3,148.13 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:159.71,160.24 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:160.24,162.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:164.2,164.36 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:164.36,166.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:168.2,169.115 2 0
github.com/echovault/echovault/echovault/api_pubsub.go:182.73,184.16 2 0
github.com/echovault/echovault/echovault/api_pubsub.go:184.16,186.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:187.2,188.40 2 0
github.com/echovault/echovault/echovault/api_pubsub.go:198.75,200.19 2 0
github.com/echovault/echovault/echovault/api_pubsub.go:200.19,202.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:203.2,204.16 2 0
github.com/echovault/echovault/echovault/api_pubsub.go:204.16,206.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:207.2,207.45 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:213.54,215.16 2 0
github.com/echovault/echovault/echovault/api_pubsub.go:215.16,217.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:218.2,218.41 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:228.82,232.16 3 0
github.com/echovault/echovault/echovault/api_pubsub.go:232.16,234.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:236.2,238.16 3 0
github.com/echovault/echovault/echovault/api_pubsub.go:238.16,240.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:242.2,245.28 3 0
github.com/echovault/echovault/echovault/api_pubsub.go:245.28,248.3 2 0
github.com/echovault/echovault/echovault/api_pubsub.go:250.2,250.20 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:50.86,52.24 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:52.24,54.3 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:56.2,58.36 3 1
github.com/echovault/echovault/echovault/api_pubsub.go:58.36,65.3 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:65.8,69.3 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:72.2,73.12 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:73.12,75.3 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:77.2,77.25 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:77.25,82.33 4 1
github.com/echovault/echovault/echovault/api_pubsub.go:82.33,84.4 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:86.3,86.13 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:97.70,98.24 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:98.24,100.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:102.2,102.36 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:102.36,104.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:106.2,107.115 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:120.87,122.24 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:122.24,124.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:126.2,128.36 3 1
github.com/echovault/echovault/echovault/api_pubsub.go:128.36,135.3 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:135.8,139.3 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:142.2,143.12 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:143.12,145.3 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:147.2,147.25 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:147.25,152.33 4 1
github.com/echovault/echovault/echovault/api_pubsub.go:152.33,154.4 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:156.3,156.13 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:167.71,168.24 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:168.24,170.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:172.2,172.36 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:172.36,174.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:176.2,177.115 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:190.73,192.16 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:192.16,194.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:195.2,196.40 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:206.75,208.19 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:208.19,210.3 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:211.2,212.16 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:212.16,214.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:215.2,215.45 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:221.54,223.16 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:223.16,225.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:226.2,226.41 1 1
github.com/echovault/echovault/echovault/api_pubsub.go:236.83,240.16 3 1
github.com/echovault/echovault/echovault/api_pubsub.go:240.16,242.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:244.2,246.16 3 1
github.com/echovault/echovault/echovault/api_pubsub.go:246.16,248.3 1 0
github.com/echovault/echovault/echovault/api_pubsub.go:250.2,253.28 3 1
github.com/echovault/echovault/echovault/api_pubsub.go:253.28,256.3 2 1
github.com/echovault/echovault/echovault/api_pubsub.go:258.2,258.20 1 1
github.com/echovault/echovault/echovault/api_set.go:36.75,39.16 3 1
github.com/echovault/echovault/echovault/api_set.go:39.16,41.3 1 1
github.com/echovault/echovault/echovault/api_set.go:42.2,42.41 1 1
@@ -3500,7 +3496,7 @@ github.com/echovault/echovault/echovault/echovault.go:176.42,178.3 1 1
github.com/echovault/echovault/echovault/echovault.go:181.2,182.40 2 1
github.com/echovault/echovault/echovault/echovault.go:182.40,184.3 1 1
github.com/echovault/echovault/echovault/echovault.go:187.2,188.43 2 1
github.com/echovault/echovault/echovault/echovault.go:188.43,190.3 1 0
github.com/echovault/echovault/echovault/echovault.go:188.43,190.3 1 1
github.com/echovault/echovault/echovault/echovault.go:192.2,192.29 1 1
github.com/echovault/echovault/echovault/echovault.go:192.29,202.38 1 1
github.com/echovault/echovault/echovault/echovault.go:202.38,206.5 3 0
@@ -3510,10 +3506,10 @@ github.com/echovault/echovault/echovault/echovault.go:210.46,212.7 1 0
github.com/echovault/echovault/echovault/echovault.go:214.5,214.17 1 0
github.com/echovault/echovault/echovault/echovault.go:217.3,225.5 1 1
github.com/echovault/echovault/echovault/echovault.go:226.8,237.65 1 1
github.com/echovault/echovault/echovault/echovault.go:237.65,239.44 2 0
github.com/echovault/echovault/echovault/echovault.go:237.65,239.44 2 1
github.com/echovault/echovault/echovault/echovault.go:239.44,240.46 1 0
github.com/echovault/echovault/echovault/echovault.go:240.46,242.7 1 0
github.com/echovault/echovault/echovault/echovault.go:244.5,244.17 1 0
github.com/echovault/echovault/echovault/echovault.go:244.5,244.17 1 1
github.com/echovault/echovault/echovault/echovault.go:246.72,248.93 2 0
github.com/echovault/echovault/echovault/echovault.go:248.93,250.6 1 0
github.com/echovault/echovault/echovault/echovault.go:251.5,251.56 1 0
@@ -3601,20 +3597,20 @@ github.com/echovault/echovault/echovault/echovault.go:477.4,477.27 1 0
github.com/echovault/echovault/echovault/echovault.go:481.2,481.37 1 0
github.com/echovault/echovault/echovault/echovault.go:481.37,483.3 1 0
github.com/echovault/echovault/echovault/echovault.go:491.34,493.2 1 1
github.com/echovault/echovault/echovault/echovault.go:496.47,497.38 1 0
github.com/echovault/echovault/echovault/echovault.go:496.47,497.38 1 1
github.com/echovault/echovault/echovault/echovault.go:497.38,499.3 1 0
github.com/echovault/echovault/echovault/echovault.go:501.2,501.12 1 0
github.com/echovault/echovault/echovault/echovault.go:501.12,502.27 1 0
github.com/echovault/echovault/echovault/echovault.go:501.2,501.12 1 1
github.com/echovault/echovault/echovault/echovault.go:501.12,502.27 1 1
github.com/echovault/echovault/echovault/echovault.go:502.27,504.53 1 0
github.com/echovault/echovault/echovault/echovault.go:504.53,506.5 1 0
github.com/echovault/echovault/echovault/echovault.go:507.4,507.10 1 0
github.com/echovault/echovault/echovault/echovault.go:510.3,510.62 1 0
github.com/echovault/echovault/echovault/echovault.go:510.3,510.62 1 1
github.com/echovault/echovault/echovault/echovault.go:510.62,512.4 1 0
github.com/echovault/echovault/echovault/echovault.go:515.2,515.12 1 0
github.com/echovault/echovault/echovault/echovault.go:518.42,520.2 1 0
github.com/echovault/echovault/echovault/echovault.go:522.43,524.2 1 0
github.com/echovault/echovault/echovault/echovault.go:526.56,528.2 1 0
github.com/echovault/echovault/echovault/echovault.go:531.56,533.2 1 0
github.com/echovault/echovault/echovault/echovault.go:515.2,515.12 1 1
github.com/echovault/echovault/echovault/echovault.go:518.42,520.2 1 1
github.com/echovault/echovault/echovault/echovault.go:522.43,524.2 1 1
github.com/echovault/echovault/echovault/echovault.go:526.56,528.2 1 1
github.com/echovault/echovault/echovault/echovault.go:531.56,533.2 1 1
github.com/echovault/echovault/echovault/echovault.go:535.44,537.2 1 0
github.com/echovault/echovault/echovault/echovault.go:539.45,541.2 1 0
github.com/echovault/echovault/echovault/echovault.go:544.45,545.40 1 0
@@ -3674,12 +3670,12 @@ github.com/echovault/echovault/echovault/keyspace.go:181.2,181.9 1 1
github.com/echovault/echovault/echovault/keyspace.go:182.108,183.36 1 0
github.com/echovault/echovault/echovault/keyspace.go:184.108,185.36 1 0
github.com/echovault/echovault/echovault/keyspace.go:188.2,190.12 2 1
github.com/echovault/echovault/echovault/keyspace.go:193.60,195.6 1 0
github.com/echovault/echovault/echovault/keyspace.go:195.6,196.83 1 0
github.com/echovault/echovault/echovault/keyspace.go:196.83,198.9 2 0
github.com/echovault/echovault/echovault/keyspace.go:201.2,202.33 2 0
github.com/echovault/echovault/echovault/keyspace.go:193.60,195.6 1 1
github.com/echovault/echovault/echovault/keyspace.go:195.6,196.83 1 1
github.com/echovault/echovault/echovault/keyspace.go:196.83,198.9 2 1
github.com/echovault/echovault/echovault/keyspace.go:201.2,202.33 2 1
github.com/echovault/echovault/echovault/keyspace.go:202.33,204.3 1 0
github.com/echovault/echovault/echovault/keyspace.go:205.2,206.13 2 0
github.com/echovault/echovault/echovault/keyspace.go:205.2,206.13 2 1
github.com/echovault/echovault/echovault/keyspace.go:211.86,212.27 1 1
github.com/echovault/echovault/echovault/keyspace.go:212.27,214.84 1 1
github.com/echovault/echovault/echovault/keyspace.go:214.84,216.4 1 1

View File

@@ -266,13 +266,4 @@ func TestEchoVault_ACLUsers(t *testing.T) {
if len(list) != 2 {
t.Errorf("ACLList() got list length %d, want %d", len(list), 2)
}
// Save the current ACL rules
ok, err = server.ACLSave()
if err != nil {
t.Errorf("ACLSave() err = %v", err)
}
if !ok {
t.Errorf("ACLSave() could not save ACL file")
}
}

View File

@@ -139,16 +139,18 @@ type SubCommandOptions struct {
// `options` - CommandListOptions.
//
// Returns: a string slice of all the loaded commands. SubCommands are represented as "command|subcommand".
func (server *EchoVault) CommandList(options CommandListOptions) ([]string, error) {
func (server *EchoVault) CommandList(options ...CommandListOptions) ([]string, error) {
cmd := []string{"COMMAND", "LIST"}
switch {
case options.ACLCAT != "":
cmd = append(cmd, []string{"FILTERBY", "ACLCAT", options.ACLCAT}...)
case options.PATTERN != "":
cmd = append(cmd, []string{"FILTERBY", "PATTERN", options.PATTERN}...)
case options.MODULE != "":
cmd = append(cmd, []string{"FILTERBY", "MODULE", options.MODULE}...)
if len(options) > 0 {
switch {
case options[0].ACLCAT != "":
cmd = append(cmd, []string{"FILTERBY", "ACLCAT", options[0].ACLCAT}...)
case options[0].PATTERN != "":
cmd = append(cmd, []string{"FILTERBY", "PATTERN", options[0].PATTERN}...)
case options[0].MODULE != "":
cmd = append(cmd, []string{"FILTERBY", "MODULE", options[0].MODULE}...)
}
}
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false, true)
@@ -171,12 +173,16 @@ func (server *EchoVault) CommandCount() (int, error) {
}
// Save triggers a new snapshot.
func (server *EchoVault) Save() (string, error) {
//
// Returns: true if the save was started. The OK response does not confirm that the save was successfully synced to
// file. Only that the background process has started.
func (server *EchoVault) Save() (bool, error) {
b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"SAVE"}), nil, false, true)
if err != nil {
return "", err
return false, err
}
return internal.ParseStringResponse(b)
res, err := internal.ParseStringResponse(b)
return strings.EqualFold(res, "ok"), err
}
// LastSave returns the unix epoch milliseconds timestamp of the last save.

View File

@@ -18,13 +18,17 @@ import (
"bytes"
"errors"
"fmt"
"github.com/echovault/echovault/internal/clock"
"github.com/echovault/echovault/internal/constants"
"github.com/tidwall/resp"
"os"
"path"
"reflect"
"slices"
"strconv"
"strings"
"testing"
"time"
)
func TestEchoVault_AddCommand(t *testing.T) {
@@ -373,3 +377,192 @@ func TestEchoVault_Plugins(t *testing.T) {
}
}
}
func TestEchoVault_CommandList(t *testing.T) {
server := createEchoVault()
tests := []struct {
name string
options interface{}
want []string
wantErr bool
}{
{
name: "1. Get all present commands when no options are passed",
options: nil,
want: func() []string {
var commands []string
for _, command := range server.commands {
if command.SubCommands == nil || len(command.SubCommands) == 0 {
commands = append(commands, strings.ToLower(command.Command))
continue
}
for _, subcommand := range command.SubCommands {
commands = append(commands, strings.ToLower(fmt.Sprintf("%s %s", command.Command, subcommand.Command)))
}
}
return commands
}(),
wantErr: false,
},
{
name: "2. Get commands filtered by hash ACL category",
options: CommandListOptions{ACLCAT: constants.HashCategory},
want: func() []string {
var commands []string
for _, command := range server.commands {
if slices.Contains(command.Categories, constants.HashCategory) {
commands = append(commands, strings.ToLower(command.Command))
}
}
return commands
}(),
wantErr: false,
},
{
name: "3. Get commands filtered by pattern",
options: CommandListOptions{PATTERN: "z*"},
want: func() []string {
var commands []string
for _, command := range server.commands {
if strings.EqualFold(command.Module, constants.SortedSetModule) {
commands = append(commands, strings.ToLower(command.Command))
}
}
return commands
}(),
wantErr: false,
},
{
name: "4. Get commands filtered by module",
options: CommandListOptions{MODULE: constants.ListModule},
want: func() []string {
var commands []string
for _, command := range server.commands {
if strings.EqualFold(command.Module, constants.ListModule) {
commands = append(commands, strings.ToLower(command.Command))
}
}
return commands
}(),
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
var got []string
var err error
if tt.options == nil {
got, err = server.CommandList()
} else {
got, err = server.CommandList(tt.options.(CommandListOptions))
}
if (err != nil) != tt.wantErr {
t.Errorf("CommandList() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("CommandList() got = %v, want %v", got, tt.want)
}
})
}
}
func TestEchoVault_CommandCount(t *testing.T) {
server := createEchoVault()
tests := []struct {
name string
want int
wantErr bool
}{
{
name: "1. Get the count of all commands/subcommands on the server",
want: func() int {
var commands []string
for _, command := range server.commands {
if command.SubCommands == nil || len(command.SubCommands) == 0 {
commands = append(commands, strings.ToLower(command.Command))
continue
}
for _, subcommand := range command.SubCommands {
commands = append(commands, strings.ToLower(fmt.Sprintf("%s %s", command.Command, subcommand.Command)))
}
}
return len(commands)
}(),
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := server.CommandCount()
if (err != nil) != tt.wantErr {
t.Errorf("CommandCount() error = %v, wantErr %v", err, tt.wantErr)
return
}
if got != tt.want {
t.Errorf("CommandCount() got = %v, want %v", got, tt.want)
}
})
}
}
func TestEchoVault_Save(t *testing.T) {
conf := DefaultConfig()
conf.DataDir = path.Join(".", "testdata", "data")
server := createEchoVaultWithConfig(conf)
tests := []struct {
name string
want bool
wantErr bool
}{
{
name: "1. Return true response when save process is started",
want: true,
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := server.Save()
if (err != nil) != tt.wantErr {
t.Errorf("Save() error = %v, wantErr %v", err, tt.wantErr)
return
}
if got != tt.want {
t.Errorf("Save() got = %v, want %v", got, tt.want)
}
})
}
}
func TestEchoVault_LastSave(t *testing.T) {
server := createEchoVault()
server.setLatestSnapshot(clock.NewClock().Now().Add(5 * time.Minute).UnixMilli())
tests := []struct {
name string
want int
wantErr bool
}{
{
name: "1. Get latest snapshot time milliseconds",
want: int(clock.NewClock().Now().Add(5 * time.Minute).UnixMilli()),
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := server.LastSave()
if (err != nil) != tt.wantErr {
t.Errorf("LastSave() error = %v, wantErr %v", err, tt.wantErr)
return
}
if got != tt.want {
t.Errorf("LastSave() got = %v, want %v", got, tt.want)
}
})
}
}

View File

@@ -770,3 +770,59 @@ func TestEchoVault_HVALS(t *testing.T) {
})
}
}
func TestEchoVault_HGet(t *testing.T) {
server := createEchoVault()
tests := []struct {
name string
presetValue interface{}
key string
fields []string
want []string
wantErr bool
}{
{
name: "1. Get values from existing hash.",
key: "HgetKey1",
presetValue: map[string]interface{}{"field1": "value1", "field2": 365, "field3": 3.142},
fields: []string{"field1", "field2", "field3", "field4"},
want: []string{"value1", "365", "3.142", ""},
wantErr: false,
},
{
name: "2. Return empty slice when attempting to get from non-existed key",
presetValue: nil,
key: "HgetKey2",
fields: []string{"field1"},
want: []string{},
wantErr: false,
},
{
name: "3. Error when trying to get from a value that is not a hash map",
presetValue: "Default Value",
key: "HgetKey3",
fields: []string{"field1"},
want: nil,
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.presetValue != nil {
err := presetValue(server, context.Background(), tt.key, tt.presetValue)
if err != nil {
t.Error(err)
return
}
}
got, err := server.HGet(tt.key, tt.fields...)
if (err != nil) != tt.wantErr {
t.Errorf("HGet() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("HGet() got = %v, want %v", got, tt.want)
}
})
}
}

View File

@@ -53,15 +53,19 @@ func (server *EchoVault) Subscribe(tag string, channels ...string) ReadPubSubMes
connections = make(map[string]conn)
}
// If connection with this name does not exist, create new connection it
var readConn net.Conn
var writeConn net.Conn
if _, ok := connections[tag]; !ok {
// If connection with this name does not exist, create new connection
readConn, writeConn = net.Pipe()
connections[tag] = conn{
readConn: &readConn,
writeConn: &writeConn,
}
} else {
// Reuse existing connection
readConn = *connections[tag].readConn
writeConn = *connections[tag].writeConn
}
// Subscribe connection to the provided channels
@@ -119,15 +123,19 @@ func (server *EchoVault) PSubscribe(tag string, patterns ...string) ReadPubSubMe
connections = make(map[string]conn)
}
// If connection with this name does not exist, create new connection it
var readConn net.Conn
var writeConn net.Conn
if _, ok := connections[tag]; !ok {
// If connection with this name does not exist, create new connection.
readConn, writeConn = net.Pipe()
connections[tag] = conn{
readConn: &readConn,
writeConn: &writeConn,
}
} else {
// Reuse existing connection.
readConn = *connections[tag].readConn
writeConn = *connections[tag].writeConn
}
// Subscribe connection to the provided channels
@@ -218,14 +226,14 @@ func (server *EchoVault) PubSubNumPat() (int, error) {
return internal.ParseIntegerResponse(b)
}
// PubSubNmSub returns the number of subscribers for each of the specified channels.
// PubSubNumSub returns the number of subscribers for each of the specified channels.
//
// Parameters:
//
// `channels` - ...string - The list of channels whose number of subscribers is to be checked.
//
// Returns: A map of map[string]int where the key is the channel name and the value is the number of subscribers.
func (server *EchoVault) PubSubNmSub(channels ...string) (map[string]int, error) {
func (server *EchoVault) PubSubNumSub(channels ...string) (map[string]int, error) {
cmd := append([]string{"PUBSUB", "NUMSUB"}, channels...)
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false, true)

View File

@@ -13,3 +13,253 @@
// limitations under the License.
package echovault
import (
"fmt"
"reflect"
"slices"
"testing"
)
func Test_Subscribe(t *testing.T) {
server := createEchoVault()
// Subscribe to channels.
tag := "tag"
channels := []string{"channel1", "channel2"}
readMessage := server.Subscribe(tag, channels...)
for i := 0; i < len(channels); i++ {
message := readMessage()
// Check that we've received the subscribe messages.
if message[0] != "subscribe" {
t.Errorf("SUBSCRIBE() expected index 0 for message at %d to be \"subscribe\", got %s", i, message[0])
}
if !slices.Contains(channels, message[1]) {
t.Errorf("SUBSCRIBE() unexpected string \"%s\" at index 1 for message %d", message[1], i)
}
}
// Publish some messages to the channels.
for _, channel := range channels {
ok, err := server.Publish(channel, fmt.Sprintf("message for %s", channel))
if err != nil {
t.Errorf("PUBLISH() err = %v", err)
}
if !ok {
t.Errorf("PUBLISH() could not publish message to channel %s", channel)
}
}
// Read messages from the channels
for i := 0; i < len(channels); i++ {
message := readMessage()
// Check that we've received the messages.
if message[0] != "message" {
t.Errorf("SUBSCRIBE() expected index 0 for message at %d to be \"message\", got %s", i, message[0])
}
if !slices.Contains(channels, message[1]) {
t.Errorf("SUBSCRIBE() unexpected string \"%s\" at index 1 for message %d", message[1], i)
}
if !slices.Contains([]string{"message for channel1", "message for channel2"}, message[2]) {
t.Errorf("SUBSCRIBE() unexpected string \"%s\" at index 1 for message %d", message[1], i)
}
}
// Unsubscribe from channels
server.Unsubscribe(tag, channels...)
}
func TestEchoVault_PSubscribe(t *testing.T) {
server := createEchoVault()
// Subscribe to channels.
tag := "tag"
patterns := []string{"channel[12]", "pattern[12]"}
readMessage := server.PSubscribe(tag, patterns...)
for i := 0; i < len(patterns); i++ {
message := readMessage()
// Check that we've received the subscribe messages.
if message[0] != "psubscribe" {
t.Errorf("PSUBSCRIBE() expected index 0 for message at %d to be \"psubscribe\", got %s", i, message[0])
}
if !slices.Contains(patterns, message[1]) {
t.Errorf("PSUBSCRIBE() unexpected string \"%s\" at index 1 for message %d", message[1], i)
}
}
// Publish some messages to the channels.
for _, channel := range []string{"channel1", "channel2", "pattern1", "pattern2"} {
ok, err := server.Publish(channel, fmt.Sprintf("message for %s", channel))
if err != nil {
t.Errorf("PUBLISH() err = %v", err)
}
if !ok {
t.Errorf("PUBLISH() could not publish message to channel %s", channel)
}
}
// Read messages from the channels
for i := 0; i < len(patterns)*2; i++ {
message := readMessage()
// Check that we've received the messages.
if message[0] != "message" {
t.Errorf("SUBSCRIBE() expected index 0 for message at %d to be \"message\", got %s", i, message[0])
}
if !slices.Contains(patterns, message[1]) {
t.Errorf("SUBSCRIBE() unexpected string \"%s\" at index 1 for message %d", message[1], i)
}
if !slices.Contains([]string{
"message for channel1", "message for channel2", "message for pattern1", "message for pattern2"}, message[2]) {
t.Errorf("SUBSCRIBE() unexpected string \"%s\" at index 1 for message %d", message[2], i)
}
}
// Unsubscribe from channels
server.PUnsubscribe(tag, patterns...)
}
func TestEchoVault_PubSubChannels(t *testing.T) {
server := createEchoVault()
tests := []struct {
name string
tag string
channels []string
patterns []string
pattern string
want []string
wantErr bool
}{
{
name: "1. Get number of active channels",
tag: "tag",
channels: []string{"channel1", "channel2", "channel3", "channel4"},
patterns: []string{"channel[56]"},
pattern: "channel[123456]",
want: []string{"channel1", "channel2", "channel3", "channel4"},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// Subscribe to channels
readChannelMessages := server.Subscribe(tt.tag, tt.channels...)
for i := 0; i < len(tt.channels); i++ {
readChannelMessages()
}
// Subscribe to patterns
readPatternMessages := server.PSubscribe(tt.tag, tt.patterns...)
for i := 0; i < len(tt.patterns); i++ {
readPatternMessages()
}
got, err := server.PubSubChannels(tt.pattern)
if (err != nil) != tt.wantErr {
t.Errorf("PubSubChannels() error = %v, wantErr %v", err, tt.wantErr)
return
}
if len(got) != len(tt.want) {
t.Errorf("PubSubChannels() got response length %d, want %d", len(got), len(tt.want))
}
for _, item := range got {
if !slices.Contains(tt.want, item) {
t.Errorf("PubSubChannels() unexpected item \"%s\", in response", item)
}
}
})
}
}
func TestEchoVault_PubSubNumPat(t *testing.T) {
server := createEchoVault()
tests := []struct {
name string
tag string
patterns []string
want int
wantErr bool
}{
{
name: "1. Get number of active patterns on the server",
tag: "tag",
patterns: []string{"channel[56]", "channel[78]"},
want: 2,
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// Subscribe to patterns
readPatternMessages := server.PSubscribe(tt.tag, tt.patterns...)
for i := 0; i < len(tt.patterns); i++ {
readPatternMessages()
}
got, err := server.PubSubNumPat()
if (err != nil) != tt.wantErr {
t.Errorf("PubSubNumPat() error = %v, wantErr %v", err, tt.wantErr)
return
}
if got != tt.want {
t.Errorf("PubSubNumPat() got = %v, want %v", got, tt.want)
}
})
}
}
func TestEchoVault_PubSubNumSub(t *testing.T) {
server := createEchoVault()
tests := []struct {
name string
subscriptions map[string]struct {
channels []string
patterns []string
}
channels []string
want map[string]int
wantErr bool
}{
{
name: "Get number of subscriptions for the given channels",
subscriptions: map[string]struct {
channels []string
patterns []string
}{
"tag1": {
channels: []string{"channel1", "channel2"},
patterns: []string{"channel[34]"},
},
"tag2": {
channels: []string{"channel2", "channel3"},
patterns: []string{"channel[23]"},
},
"tag3": {
channels: []string{"channel2", "channel4"},
patterns: []string{},
},
},
channels: []string{"channel1", "channel2", "channel3", "channel4", "channel5"},
want: map[string]int{"channel1": 1, "channel2": 3, "channel3": 1, "channel4": 1, "channel5": 0},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
for tag, subs := range tt.subscriptions {
readPat := server.PSubscribe(tag, subs.patterns...)
for _, _ = range subs.patterns {
readPat()
}
readChan := server.Subscribe(tag, subs.channels...)
for _, _ = range subs.channels {
readChan()
}
}
got, err := server.PubSubNumSub(tt.channels...)
if (err != nil) != tt.wantErr {
t.Errorf("PubSubNumSub() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("PubSubNumSub() got = %v, want %v", got, tt.want)
}
})
}
}

View File

@@ -1,15 +0,0 @@
// Copyright 2024 Kelvin Clement Mwinuka
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package clock

View File

@@ -73,8 +73,8 @@ func (ps *PubSub) Subscribe(_ context.Context, conn *net.Conn, channels []string
}); err != nil {
log.Println(err)
}
ps.channels = append(ps.channels, newChan)
}
ps.channels = append(ps.channels, newChan)
} else {
// Subscribe to existing channel
if ps.channels[channelIdx].Subscribe(conn) {

View File

@@ -172,10 +172,10 @@ func (r *Raft) HasJoinedCluster() bool {
}
func (r *Raft) AddVoter(
id raft.ServerID,
address raft.ServerAddress,
prevIndex uint64,
timeout time.Duration,
id raft.ServerID,
address raft.ServerAddress,
prevIndex uint64,
timeout time.Duration,
) error {
if r.IsRaftLeader() {
raftConfig := r.raft.GetConfiguration()