我想代表这样的多个条件:
if [ ( $g -eq 1 -a "$c" = "123" ) -o ( $g -eq 2 -a "$c" = "456" ) ]
then
echo abc;
else
echo efg;
fi
Run Code Online (Sandbox Code Playgroud)
但是当我执行脚本时,它会显示出来
syntax error at line 15: `[' unexpected,
Run Code Online (Sandbox Code Playgroud)
第15行显示是否....
这种情况怎么了?我猜这有点不对劲()
.
似乎mockito只验证是否调用了模拟对象的方法,并且模拟对象总是具有某种功能.像doReturn().when(模拟对象)...
但我可以创建一个模拟对象并定义doReturn().when(模拟对象)..然后验证另一个对象的方法被调用?
这就是我想要做的:我定义一个mockEnvironment并返回一个响应,无论发生什么.但后来我想验证在不同情况下调用anotherObj的不同方法.
怎么做?
public class BaseClass {
private Environment mockEnvironment;
@Test
public void testcase () {
setMockitoEnvironment();
response = foo(mockEnvironment, argument1);
verify(anotherObj).codePath1(...);
response = foo(mockEnvironment, argument2);
verify(anotherObj).codePath2(...);
}
}
//this method successfully return a response with any input
//because I do not care how response is eventually generated,
//I only care whether code path reaches createResponse() via
//code path 1 or code path 2.
private void setMockitoEnvironment() {
mockEnvironment = mock(Environment.class);
doReturn (response).when(mockEnvironment).createResponse(for any input);
}
private Response foo(...) …
Run Code Online (Sandbox Code Playgroud) 该Terraform数据源文档告诉我一个数据源是什么,但我不太明白.有人能给我一个数据源的用例吗?它与使用变量配置的东西有什么区别?
我实现了一个继承自BlockJUnit4ClassRunner的运行器类A.class,以便我可以用@RunWith(A.class)注释测试.与此同时,某人 else用RunWith(Parameterized.class)注释测试.很明显,我们不能同时使用两个@RunWith.
如何解决这个问题呢?或者如何合并这两个@RunWith?
我正在学习缓存,并对缓存的并发性有疑问.
据我所知,LRU缓存是用双链表+哈希表实现的.那么LRU缓存如何处理高频并发?请注意,从缓存中获取数据并将数据放入缓存都会更新链接列表和哈希表,因此缓存会一直被修改.
如果我们使用互斥锁来保证线程安全,那么如果大量人员访问缓存,速度是否会降低?如果我们不使用锁,会使用什么技术?提前致谢.
大多数循环缓冲区假定每次只读/写一个对象,我发现以(const char*bytes,size_t byte_count)的形式对二进制数据进行操作的唯一链接是http://www.asawicki.info/news_1468_circular_buffer_of_raw_binary_data_in_c. html,我觉得这不是不正确而且有点长.什么是正确的实施?
我自己创造了一个.但它仍然很长.任何人都可以分享更优雅的版本吗?或者你能指出我的代码中有什么东西可以改进吗?
class Pipe{
Pipe(size_t capacity): _capacity(capacity){ init(); }
~Pipe(){delete [] _buf; }
size_t read(char* data, size_t bytes);
size_t write(const char* data, size_t bytes);
private:
//only _capacity-1 is used, one is to identify full or empty.
void init(){_buf = new char[_capacity];
_wptr = 0; _rptr = 0; _used_size = 0;
}
char* _buf;
size_t _capacity, _wptr, _rptr, _used_size;
bool isFull(){return (_wptr + 1 ) % (_capacity) == _rptr;}
bool isEmpty(){return _wptr == _rptr;}
};
size_t …
Run Code Online (Sandbox Code Playgroud) 我在EC2上配置了一个气流Web服务器,它在端口8080处侦听。
我在EC2前面有一个AWS ALB(应用程序负载均衡器),在https 80上监听(面向互联网),并且实例目标端口面向http 8080。
我无法从浏览器浏览https:// <airflow link>,因为气流Web服务器将我重定向到http:// <airflow link> / admin,ALB不会监听。
如果我从浏览器浏览https:// <airflow link> / admin / airflow / login?next =%2Fadmin%2F,那么我会看到登录页面,因为此链接不会重定向我。
我的问题是如何更改气流,以便在浏览https:// <airflow link>时,气流Web服务器会将我重定向到https:...,而不是http:// .....,以便AWS ALB可以处理请求。
根据下面的答案,我试图将airflow.cfg的base_url从http:// localhost:8080更改为https:// localhost:8080,但是我看不到任何改变....
无论如何,如何从ALB访问https:// <气流链接>?
我按如下方式使用Terraform部署lambda,但存在以下问题:
1)我希望始终调用null_resource.lambda或更改stop_ec2.py时调用它,以便stop_ec2_upload.zip不会过时。我应该在触发器中写些什么{}?
2)更改stop_ec2_upload.zip时,如何使aws_lambda_function.stop_ec2将新的stop_ec2_upload.zip更新到云?
现在,我必须销毁aws_lambda_function.stop_ec2,然后再次创建它。我可以在代码中编写任何内容,以便在运行terraform apply时自动发生1)和2)吗?
resource "null_resource" "lambda" {
triggers {
#what should I write here?
}
provisioner "local-exec" {
command = "mkdir -p lambda_func && cd lambda_py && zip
../lambda_func/stop_ec2_upload.zip stop_ec2.py && cd .."
}
}
resource "aws_lambda_function" "stop_ec2" {
depends_on = ["null_resource.lambda"]
function_name = "stopEC2"
handler = "stop_ec2.handler"
runtime = "python3.6"
filename = "lambda_func/stop_ec2_upload.zip"
source_code_hash =
"${base64sha256(file("lambda_func/stop_ec2_upload.zip"))}"
role = "..."
}
Run Code Online (Sandbox Code Playgroud) data "archive_file" "example" {
type = "zip"
output_path = "${local.dest_dir}/hello_upload.zip"
source_file = "${local.src_dir}/hello.py"
source_dir = "${local.src_dir}/pytz"
source_dir = "${local.src_dir}/pytz-2018.5.dist-info"
}
Run Code Online (Sandbox Code Playgroud)
请注意, hello.py 需要导入 Lambda 中未包含的 pytz,这就是我要上传包的原因。
当我运行上述 terraform 时,出现错误:“source_dir”:与 source_file 冲突。那么如何同时上传我的 lambda 文件 hello.py 和目录包 pytz 呢?
谁能解释一下 AWS EFS 挂载目标是什么意思?AWS文档说它是供你访问EFS的,我不明白。
我对EFS挂载目标的理解是:当你创建EFS时,在后端,AWS需要选择一个位置来启动服务器,这就是为什么它会要求你提供VPC、子网信息,就像你创建EC2时一样,您需要告知您想要启动此 EC2 的 VPC、子网。但为什么所有 AWS 文档和教程都会教您创建多个挂载目标,每个子网一个?挂载目标的安全组不足以控制对 EFS 的访问吗?
谁能解释一下 EFS 挂载目标的用途是什么以及为什么我们需要多个挂载目标,每个子网一个?谢谢
terraform ×3
aws-lambda ×2
airflow ×1
amazon-efs ×1
apache ×1
bash ×1
c++ ×1
caching ×1
concurrency ×1
java ×1
junit ×1
junit-runner ×1
mockito ×1
shell ×1
unit-testing ×1
unix ×1