From 1e07f9c8c61457e341855c069864935002d39cc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20=C3=9Acar?= Date: Fri, 10 Apr 2020 14:10:26 +0200 Subject: [PATCH 1/2] fix #227: unpause reneging arrivals that are kicked from a queue --- inst/include/simmer/process/arrival_impl.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/inst/include/simmer/process/arrival_impl.h b/inst/include/simmer/process/arrival_impl.h index 892328c5..9a517c7f 100644 --- a/inst/include/simmer/process/arrival_impl.h +++ b/inst/include/simmer/process/arrival_impl.h @@ -1,5 +1,5 @@ // Copyright (C) 2016 Bart Smeets and Iñaki Ucar -// Copyright (C) 2016-2019 Iñaki Ucar +// Copyright (C) 2016-2020 Iñaki Ucar // // This file is part of simmer. // @@ -79,6 +79,8 @@ namespace simmer { unset_busy(sim->now()); unset_remaining(); foreach_ (ResVec::value_type& itr, resources) { + if (itr->is_waiting(this)) + --paused; if (!keep_seized || itr->is_waiting(this)) itr->remove(this); } From f90206ca76db8ffbe39a68ec500ffe34ea71dbb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20=C3=9Acar?= Date: Fri, 10 Apr 2020 14:22:24 +0200 Subject: [PATCH 2/2] add test, update NEWS and cran-commens --- NEWS.md | 7 ++++++ cran-comments.md | 8 +++---- tests/testthat/test-trajectory-renege.R | 29 ++++++++++++++++++++++++- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/NEWS.md b/NEWS.md index 6b783908..20d6682c 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,10 @@ +# simmer 4.4.1 + +## Minor changes and fixes + +- Fix pause status of reneging arrivals that are kicked from a resource queue + (#228 addressing #227). + # simmer 4.4.0 ## New features diff --git a/cran-comments.md b/cran-comments.md index 32bfc175..60e75ebf 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,6 +1,6 @@ -## Minor release +## Patch release -Several improvements and bug fixes. +Small, but important bug fix. Regarding the package title, Uwe asked us in a past submission to remove "for R" because it is redundant. If it is not an issue, we would like to keep @@ -12,8 +12,8 @@ written in Julia". ## Test environments -- Fedora 31 + GCC + clang (local), R 3.6.1 -- Ubuntu 16.04 + GCC (on Travis-CI), R 3.5.3, 3.6.1, devel +- Fedora 31 + GCC + clang (local), R 3.6.3 +- Ubuntu 16.04 + GCC (on Travis-CI), R 3.5.3, 3.6.3, devel - linux-x86_64-rocker-gcc-san (on r-hub) - ubuntu-rchk (on r-hub) - win-builder, R devel diff --git a/tests/testthat/test-trajectory-renege.R b/tests/testthat/test-trajectory-renege.R index f1441b14..0533f2ca 100644 --- a/tests/testthat/test-trajectory-renege.R +++ b/tests/testthat/test-trajectory-renege.R @@ -1,4 +1,4 @@ -# Copyright (C) 2016-2019 Iñaki Ucar +# Copyright (C) 2016-2020 Iñaki Ucar # # This file is part of simmer. # @@ -717,3 +717,30 @@ test_that("a reneging arrival keeps seized resources (2)", { expect_equal(res$server, c(1, 0, 0)) expect_equal(res$queue, c(0, 1, 0)) }) + +test_that("a reneging arrival is able to seize a resource again", { + t <- trajectory() %>% + renege_in( + t = 5, + out = trajectory() %>% + rollback(2)) %>% + seize("resource") %>% + renege_abort() %>% + timeout(10) %>% + release("resource") + + env <- simmer(verbose=TRUE) %>% + add_resource("resource") %>% + add_generator("dummy", t, at(0, 3)) %>% + run() + + arr <- get_mon_arrivals(env) + res <- get_mon_resources(env) + + expect_equal(arr$end_time, c(10, 20)) + expect_equal(arr$activity_time, c(10, 10)) + expect_true(all(arr$finished)) + expect_equal(res$time, c(0, 3, 8, 8, 10, 20)) + expect_equal(res$server, c(1, 1, 1, 1, 1, 0)) + expect_equal(res$queue, c(0, 1, 0, 1, 0, 0)) +})