From 447b4c9a2e99a37c0d17e01e79d786f2c11590f5 Mon Sep 17 00:00:00 2001 From: Jordan Bracco Date: Sat, 16 May 2020 12:17:40 +0200 Subject: Format and prepare for release --- test/concurrent_limiter_test.exs | 53 +++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 28 deletions(-) (limited to 'test/concurrent_limiter_test.exs') diff --git a/test/concurrent_limiter_test.exs b/test/concurrent_limiter_test.exs index e1d281e..090417e 100644 --- a/test/concurrent_limiter_test.exs +++ b/test/concurrent_limiter_test.exs @@ -1,42 +1,39 @@ +# ConcurrentLimiter: A concurrency limiter. +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: LGPL-3.0-only + defmodule ConcurrentLimiterTest do use ExUnit.Case doctest ConcurrentLimiter - test "limiter ets is atomic" do - name = "test1" + test "limiter is atomic" do + name = "test" ConcurrentLimiter.new(name, 2, 2) - atomic_test(name) - end - - test "limiter atomics is atomic" do - name = "test2" - ConcurrentLimiter.new(name, 2, 2, backend: :atomics) - atomic_test(name) - end - - defp atomic_test(name) do self = self() - sleepy = fn sleep -> - case ConcurrentLimiter.limit(name, fn -> - send(self, :ok) - Process.sleep(sleep) - :ok - end) do - :ok -> :ok - other -> send(self, other) - end - end - - spawn_link(fn -> sleepy.(500) end) - spawn_link(fn -> sleepy.(500) end) - spawn_link(fn -> sleepy.(500) end) - spawn_link(fn -> sleepy.(500) end) - spawn_link(fn -> sleepy.(500) end) + spawn_link(fn -> sleepy(name, 500) end) + spawn_link(fn -> sleepy(name, 500) end) + spawn_link(fn -> sleepy(name, 500) end) + spawn_link(fn -> sleepy(name, 500) end) + spawn_link(fn -> sleepy(name, 500) end) assert_receive :ok, 2000 assert_receive :ok, 2000 assert_receive {:error, :overload}, 2000 assert_receive :ok, 2000 assert_receive :ok, 2000 end + + defp sleepy(duration) do + result = + ConcurrentLimiter.limit(name, fn -> + send(self, :ok) + Process.sleep(sleep) + :ok + end) + + case result do + :ok -> :ok + other -> send(self, other) + end + end end -- cgit v1.2.3