You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ja...@apache.org on 2019/12/12 23:57:33 UTC

[couchdb-smoosh] branch utc-time created (now 8f7fa38)

This is an automated email from the ASF dual-hosted git repository.

jaydoane pushed a change to branch utc-time
in repository https://gitbox.apache.org/repos/asf/couchdb-smoosh.git.


      at 8f7fa38  Pass time into in_allowed_window

This branch includes the following new commits:

     new e335d8c  Switch to UTC
     new 8f7fa38  Pass time into in_allowed_window

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[couchdb-smoosh] 02/02: Pass time into in_allowed_window

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jaydoane pushed a commit to branch utc-time
in repository https://gitbox.apache.org/repos/asf/couchdb-smoosh.git

commit 8f7fa38a4c7e2aa7dd548e4ad2bfea05edbba93b
Author: Jay Doane <ja...@apache.org>
AuthorDate: Thu Dec 12 15:56:55 2019 -0800

    Pass time into in_allowed_window
    
    Before this patch, the current time is calculated inside
    in_allowed_window/2, which makes testing it difficult, as the
    calculations depend on when tests are run.
    
    This change factors the time as an argument of in_allowed_window, while
    the tests continue to test against the current time that they are run.
---
 src/smoosh_channel.erl                 |  3 ++-
 src/smoosh_utils.erl                   | 19 +++++++------------
 test/exunit/scheduling_window_test.exs | 24 ++++++++++++++----------
 3 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/src/smoosh_channel.erl b/src/smoosh_channel.erl
index d8a8d14..26dce16 100644
--- a/src/smoosh_channel.erl
+++ b/src/smoosh_channel.erl
@@ -156,7 +156,8 @@ handle_info(check_window, State0) ->
     {ok, State} = code_change(nil, State0, nil),
     #state{paused = Paused, name = Name} = State,
     StrictWindow = smoosh_utils:get(Name, "strict_window", "false"),
-    FinalState = case {not Paused, smoosh_utils:in_allowed_window(Name)} of
+    {_, {HH, MM, _}} = calendar:universal_time(),
+    FinalState = case {not Paused, smoosh_utils:in_allowed_window({HH, MM}, Name)} of
         {false, false} ->
             % already in desired state
             State;
diff --git a/src/smoosh_utils.erl b/src/smoosh_utils.erl
index fcd0fcd..ca8c271 100644
--- a/src/smoosh_utils.erl
+++ b/src/smoosh_utils.erl
@@ -15,7 +15,7 @@
 
 -export([get/2, get/3, group_pid/1, split/1, stringify/1, ignore_db/1]).
 -export([
-    in_allowed_window/1
+    in_allowed_window/2
 ]).
 
 group_pid({Shard, GroupId}) ->
@@ -60,20 +60,15 @@ ignore_db(DbName) when is_list(DbName) ->
 ignore_db(Db) ->
     ignore_db(couch_db:name(Db)).
 
-in_allowed_window(Channel) ->
+in_allowed_window(Time, Channel) ->
     From = parse_time(get(Channel, "from"), {00, 00}),
     To = parse_time(get(Channel, "to"), {24, 00}),
-    in_allowed_window(From, To).
-
-in_allowed_window(From, To) ->
-    {_, {HH, MM, _}} = calendar:universal_time(),
-    case From < To of
-    true ->
-        ({HH, MM} >= From) andalso ({HH, MM} < To);
-    false ->
-        ({HH, MM} >= From) orelse ({HH, MM} < To)
-    end.
+    in_allowed_window(Time, From, To).
 
+in_allowed_window({HH, MM}, From, To) when From < To ->
+    ({HH, MM} >= From) andalso ({HH, MM} < To);
+in_allowed_window({HH, MM}, From, To) ->
+    ({HH, MM} >= From) orelse ({HH, MM} < To).
 
 parse_time(undefined, Default) ->
     Default;
diff --git a/test/exunit/scheduling_window_test.exs b/test/exunit/scheduling_window_test.exs
index 7fa6c23..e9c3d4c 100644
--- a/test/exunit/scheduling_window_test.exs
+++ b/test/exunit/scheduling_window_test.exs
@@ -1,8 +1,6 @@
 defmodule SmooshSchedulingWindowTest do
   use Couch.Test.ExUnit.Case
 
-  alias Couch.Test.Setup
-
   setup_all(context) do
     test_ctx = :test_util.start_couch([])
 
@@ -15,14 +13,20 @@ defmodule SmooshSchedulingWindowTest do
     context
   end
 
+  def hh_mm(date_time) do
+    {date_time.hour, date_time.minute}
+  end
+
   test "in_allowed_window returns true by default", _context do
-    assert :smoosh_utils.in_allowed_window('nonexistent_channel') == true
+    now = DateTime.utc_now()
+    assert :smoosh_utils.in_allowed_window(hh_mm(now), 'nonexistent_channel') == true
   end
 
   test "in_allowed_window ignores bad input", _context do
+    now = DateTime.utc_now()
     :config.set('smoosh.test_channel', 'from', 'midnight', false)
     :config.set('smoosh.test_channel', 'to', 'infinity', false)
-    assert :smoosh_utils.in_allowed_window('test_channel') == true
+    assert :smoosh_utils.in_allowed_window(hh_mm(now), 'test_channel') == true
   end
 
   test "in_allowed_window returns false when now < from < to", _context do
@@ -31,7 +35,7 @@ defmodule SmooshSchedulingWindowTest do
     to = DateTime.add(now, 36_000)
     :config.set('smoosh.test_channel', 'from', '#{from.hour}:#{from.minute}', false)
     :config.set('smoosh.test_channel', 'to', '#{to.hour}:#{to.minute}', false)
-    assert :smoosh_utils.in_allowed_window('test_channel') == false
+    assert :smoosh_utils.in_allowed_window(hh_mm(now), 'test_channel') == false
   end
 
   test "in_allowed_window returns true when from < now < to", _context do
@@ -40,7 +44,7 @@ defmodule SmooshSchedulingWindowTest do
     to = DateTime.add(now, 18_000)
     :config.set('smoosh.test_channel', 'from', '#{from.hour}:#{from.minute}', false)
     :config.set('smoosh.test_channel', 'to', '#{to.hour}:#{to.minute}', false)
-    assert :smoosh_utils.in_allowed_window('test_channel') == true
+    assert :smoosh_utils.in_allowed_window(hh_mm(now), 'test_channel') == true
   end
 
   test "in_allowed_window returns false when from < to < now", _context do
@@ -49,7 +53,7 @@ defmodule SmooshSchedulingWindowTest do
     to = DateTime.add(now, -18_000)
     :config.set('smoosh.test_channel', 'from', '#{from.hour}:#{from.minute}', false)
     :config.set('smoosh.test_channel', 'to', '#{to.hour}:#{to.minute}', false)
-    assert :smoosh_utils.in_allowed_window('test_channel') == false
+    assert :smoosh_utils.in_allowed_window(hh_mm(now), 'test_channel') == false
   end
 
   test "in_allowed_window returns true when to < from < now", _context do
@@ -58,7 +62,7 @@ defmodule SmooshSchedulingWindowTest do
     to = DateTime.add(now, -36_000)
     :config.set('smoosh.test_channel', 'from', '#{from.hour}:#{from.minute}', false)
     :config.set('smoosh.test_channel', 'to', '#{to.hour}:#{to.minute}', false)
-    assert :smoosh_utils.in_allowed_window('test_channel') == true
+    assert :smoosh_utils.in_allowed_window(hh_mm(now), 'test_channel') == true
   end
 
   test "in_allowed_window returns false when to < now < from", _context do
@@ -67,7 +71,7 @@ defmodule SmooshSchedulingWindowTest do
     to = DateTime.add(now, -18_000)
     :config.set('smoosh.test_channel', 'from', '#{from.hour}:#{from.minute}', false)
     :config.set('smoosh.test_channel', 'to', '#{to.hour}:#{to.minute}', false)
-    assert :smoosh_utils.in_allowed_window('test_channel') == false
+    assert :smoosh_utils.in_allowed_window(hh_mm(now), 'test_channel') == false
   end
 
   test "in_allowed_window returns true when now < to < from", _context do
@@ -76,6 +80,6 @@ defmodule SmooshSchedulingWindowTest do
     to = DateTime.add(now, 18_000)
     :config.set('smoosh.test_channel', 'from', '#{from.hour}:#{from.minute}', false)
     :config.set('smoosh.test_channel', 'to', '#{to.hour}:#{to.minute}', false)
-    assert :smoosh_utils.in_allowed_window('test_channel') == true
+    assert :smoosh_utils.in_allowed_window(hh_mm(now), 'test_channel') == true
   end
 end


[couchdb-smoosh] 01/02: Switch to UTC

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jaydoane pushed a commit to branch utc-time
in repository https://gitbox.apache.org/repos/asf/couchdb-smoosh.git

commit e335d8c7ee38eba08a5cd2f09b8de4f4a9ecda7c
Author: Jay Doane <ja...@apache.org>
AuthorDate: Thu Dec 12 14:31:03 2019 -0800

    Switch to UTC
    
    The tests assume UTC, and tend to fail in some timezones more than
    others.
---
 src/smoosh_utils.erl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/smoosh_utils.erl b/src/smoosh_utils.erl
index b433de0..fcd0fcd 100644
--- a/src/smoosh_utils.erl
+++ b/src/smoosh_utils.erl
@@ -66,7 +66,7 @@ in_allowed_window(Channel) ->
     in_allowed_window(From, To).
 
 in_allowed_window(From, To) ->
-    {HH, MM, _} = erlang:time(),
+    {_, {HH, MM, _}} = calendar:universal_time(),
     case From < To of
     true ->
         ({HH, MM} >= From) andalso ({HH, MM} < To);