标签: runit

为什么RUnit会改变我的随机数?

在单元测试中,我启动一个辅助函数(生成测试数据):

set.seed(1)
Run Code Online (Sandbox Code Playgroud)

我正在以交互方式开发单元测试,如下所示:

source('tests/runit.functions.R');test.something()
Run Code Online (Sandbox Code Playgroud)

但是当我从我的测试中运行时,run_tests.R他们失败了.尽管有set.seed(1)命令,我把它缩小到不同的随机数!我在set.seed(1)之后添加了这一行:

print(sessionInfo());print("RANDOM SEED:");print(.Random.seed)
Run Code Online (Sandbox Code Playgroud)

真正有趣的部分是随机种子完全不同.在批处理脚本中,它只有三个数字:

501 1280795612 -169270483
Run Code Online (Sandbox Code Playgroud)

在我的交互式R会话中,它是一个626元素的怪物:

[1]         403         624  -169270483  -442010614 ...
 ...
[617]   197184543    -2095148  ... -689249108
Run Code Online (Sandbox Code Playgroud)

第一个数字,501与403,显然是随机数生成器的类型,但我无法追踪主列表中数字的含义.

我认为我的问题的核心是确保我的单元测试具有可靠的随机数生成的最佳方法是什么?第二个问题是故障排除建议:如何跟踪正在使用哪个随机数生成器(更重要的是)哪个代码/包/设置决定使用它?

sessionInfo不看非常有帮助的,但它显示出一些小的差异.例如,包含TTR包是由于正在运行其他单元测试.这是sessionInfo批处理脚本的输出,第一行是#!/usr/bin/Rscript --slave:

R version 2.15.1 (2012-06-22)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.utf8       LC_NUMERIC=C              LC_TIME=en_US.utf8        LC_COLLATE=en_US.utf8     LC_MONETARY=en_US.utf8    LC_MESSAGES=en_US.utf8   
 [7] LC_PAPER=C                LC_NAME=C                 LC_ADDRESS=C              LC_TELEPHONE=C            LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=C      

attached base packages:
[1] methods   stats     graphics  grDevices utils     datasets  base     

other attached packages:
[1] TTR_0.21-1   xts_0.8-6    zoo_1.7-7    RUnit_0.4.26

loaded …
Run Code Online (Sandbox Code Playgroud)

random r runit

9
推荐指数
1
解决办法
210
查看次数

runit:无法锁定debian上的监督错误

我正在尝试设置runit并登录我的debian wheezy VM.到目前为止,我已经设法通过以下设置获得gunicorn服务:

sudo mkdir /etc/sv/gunicorn
sudo vi /etc/sv/gunicorn/run
sudo ln -s /etc/sv/gunicorn/run /etc/service
Run Code Online (Sandbox Code Playgroud)

我的日志运行文件有:

LOG_DIR=/home/$USER/logs/gunicorn/

exec svlogd -tt $LOG_DIR
Run Code Online (Sandbox Code Playgroud)

当我运行sudo runsvdir/etc/service/gunicorn时

runsv supervise: fatal: unable to lock supervise/lock: temporary failure
Run Code Online (Sandbox Code Playgroud)

不知道我做错了什么,有什么指针吗?

logging debian runit

7
推荐指数
1
解决办法
7241
查看次数

automatically generate test cases in RUnit or testthat

How can I automatically generate test cases in RUnit?

For example, let's say I have a simple sum() function:

sum <- function(x, y) {
    return (x + y)
    }
Run Code Online (Sandbox Code Playgroud)

I would like to test this function on a series of different test cases:

test_cases <- c( c(2, 2, 4),
     c(3, 3, 6),
     c(0, 0, 0),
     c(-1, 2, 1)
     )
Run Code Online (Sandbox Code Playgroud)

The first two elements of each vector are x and y, and the third is the expected output of the sum(x,y) …

testing r runit testthat

6
推荐指数
1
解决办法
1067
查看次数

在runit/daemontools监督下运行docker进程是否合理

我一直在运行docker进程(apps)

docker run …

但是runit supervision(runit就像daemontools) - 所以runit确保进程保持运行,传递信号等.

这合理吗?Docker似乎想要运行自己的妖魔化 - 但它并不像runit那样彻底.此外,当runit重新启动应用程序时 - 每次都会创建一个新容器(正常),但它会留下旧容器的痕迹 - 这似乎暗示我正在以错误的方式执行此操作.

docker不应该以这种方式运行吗?

如果我不是建立一个集装箱从图像中,只有一次,再有runit运行/监督该容器中所有的时间?

runit docker

6
推荐指数
1
解决办法
1262
查看次数

Nginx和runit ....什么是最佳做法

我对确保Nginx始终处于启动状态感到困惑。我对init.d脚本的理解只是启动和停止nginx。它是否正确?然后在文档中说保持daemon = off;

现在,我想使用runit,以下是我的runit运行脚本:

#!/bin/sh
exec /etc/init.d/nginx start
Run Code Online (Sandbox Code Playgroud)

我注意到总是创建一个新的PID。

因此,总而言之:1)我在nginx文件中没有此语句:

daemon = off;
Run Code Online (Sandbox Code Playgroud)

2)我正在使用上面的runit脚本,但是它总是创建一个新的PID。

因此...确保nginx始终运行的最佳实践。

顺便说一下,我正在使用monit,但会运行它来拥有hte守护程序。

作为测试,我确实使用killall -9 nginx杀死了nginx,并且做了ps aux | grep nginx,发现我有新的pid。所以..我还需要runit吗?

daemon nginx runit

4
推荐指数
1
解决办法
2316
查看次数

标签 统计

runit ×5

r ×2

daemon ×1

debian ×1

docker ×1

logging ×1

nginx ×1

random ×1

testing ×1

testthat ×1