小编ber*_*olo的帖子

Terraform:在另一个资源中引用在 for_each 中创建的资源

当我有一个托管区域时,我可以轻松创建该区域,然后通过按名称引用托管区域,在委托账户中为该区域创建 NS 记录。

现在我需要创建多个托管区域并将名称服务器记录传递回父帐户,我不确定是否可以(或者如何)引用多个资源。阅读本文可能没有多大意义,因此下面的代码是我所掌握的。

我现在有一个for_each循环,它将循环遍历字符串列表并为每个字符串创建一个托管区域,然后我想在另一个帐户中创建相应的 NS 记录,请注意,我正在使用单独的提供程序连接到provider = aws.management_account管理帐户,并且这对于单个托管区域来说效果很好。

我不知道如何引用托管区域,是否有一些语法或者我的方法错误?

resource "aws_route53_zone" "public_hosted_zone" {
  for_each = local.aws_zones
  name     = "${each.value}.${var.domain}"
}

resource "aws_route53_record" "ns_records" {
  for_each        = local.aws_zones
  provider        = aws.management_account
  allow_overwrite = true
  name            = "${each.value}.${var.domain}"
  ttl             = 30
  type            = "NS"
  zone_id         = data.aws_ssm_parameter.public_hosted_zone_id.value

  records = [
    aws_route53_zone.public_hosted_zone.name_servers[0], # Here is my old code which works for a single hosted zone but I cannot work out how to reference multiples …
Run Code Online (Sandbox Code Playgroud)

foreach amazon-web-services amazon-route53 terraform

27
推荐指数
2
解决办法
2万
查看次数

Spring boot - 无法关闭日志记录

我正在尝试使用application.properties文件关闭STS中的控制台输出以获得Spring启动应用程序.

设置值logging.level.root似乎确实有一些效果,但我永远不能完全关闭它,也不能关闭自动配置报告输出.

logging.level.root=OFF
spring.main.banner-mode=OFF
application.version=@project.version@
Run Code Online (Sandbox Code Playgroud)

该横幅确实被属性spring.main.banner-mode关闭.

由于某些原因,我仍然在启动时从spring获得DEBUG输出:

 2017-05-09 15:33:16.744 DEBUG 11772 --- [           main] .b.l.ClasspathLoggingApplicationListener : Application started with classpath:
 2017-05-09 15:33:16.798 DEBUG 11772 --- [           main] o.s.boot.SpringApplication               : Loading source class 
Run Code Online (Sandbox Code Playgroud)

有更多行告诉我正在加载哪些属性文件,但我不想用它们填写这篇文章.

接下来我将获得自动配置报告输出.

我想知道我是否有配置问题,如果这会导致spring在启动时继续输出?

java logging spring-boot

13
推荐指数
1
解决办法
6530
查看次数

maven构建中的代码覆盖 - 由于缺少类目录而跳过JaCoCo执行

如果我有一个项目但是现在我有一个多模块项目,我能够使代码覆盖正常工作.

我的应用程序是在api项目中构建的,我的所有集成测试都在一个单独的项目中运行,该项目使用前面模块构建的artefact.

构建运行,但我没有得到代码覆盖率报告,而是我收到信息消息:

由于缺少类目录而跳过JaCoCo执行

我的覆盖率报告文件jacoco-it.exec已创建,但似乎jacoco插件需要运行测试的项目中的类.

有人可以告诉我,当类在另一个模块中时,我需要做些什么才能创建覆盖率报告?

java code-coverage maven jacoco

10
推荐指数
1
解决办法
2657
查看次数

是否所有程序代码都加载到文本\代码段\内存段中

我已经开始关注c编程了,虽然我不是一个完整的初学者(我对Java和Web开发有所了解)但有很多我不理解的东西.

我的问题是关于何时首次将程序加载到内存中.我无法理解这里发生的事情.

程序启动时是将所有程序代码加载到内存中还是只加载了所需的程序代码?

在此过程中,当程序运行时,当进程获得CPU时间或加载的代码保留在内存中时,此代码/指令集是否会交换进出物理磁盘?

如果两个进程可以共享相同的指令集,这是否意味着每个进程都有它的虚拟内存空间,一个独立的代码段?

我很抱歉,如果我的问题基本或措辞不好,但我上周才开始看这个问题,经过一个周末的阅读后,我有更多的问题而不是答案!

c memory operating-system segment

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

Git - 将 master 合并回开发中?

我在一个新团队中,工作方式与我之前在功能分支上工作的方式完全不同,测试人员将在该功能分支上进行测试,然后我们将运行 jenkins 作业来合并该分支当功能通过测试签署时,将其放入开发中,根据开发重新调整分支以保持新鲜。

从开发中截取了发布版本,然后将其发布并可能合并到主版本中。这是我的第一个 git 项目,对于任何人来说这似乎都是一个很容易理解的工作流程。

我现在在一个不同的团队,没有人能真正回答他们为什么要这样工作,在将开发合并到 master 后,是否有充分的理由将 master 合并回开发?

这个工作流程是我创建一个功能分支并在本地处理它,当我对该功能感到满意时,我会创建一个合并请求到开发中。然后我部署开发中的更改,这就是测试的内容。一旦测试结束,我会在 gitlab 中为 master 分支创建一个樱桃选择合并,用于我的开发提交,一旦它在 master 中,我就会从 master 分支发布更改。

有人总是将 master 合并回开发中。我问过一些团队成员(这是一个非常小的团队,只有 5 名开发人员),没有人真正知道为什么,他们只是这样做。

之前的项目有超过 100 名开发人员在不同的小型开发团队中工作,因此限制要严格得多。

这是 gitlabs 工作方式特有的吗?

git git-flow gitlab

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

定位内部框架布局

我正在尝试将视图页面指示符圈添加到屏幕上,并且我有代码工作,因为我滑动图像将更改以指示我在哪个页面.

我似乎无法将布局定位在我想要的位置,它确实在文档中说框架布局应该只包含一个孩子,但我已经看到很多例子,这似乎并非如此.

是否无法在框架布局中定位相对布局?

我希望条带点出现在视图寻呼机上但在底部,就像带有点的ios内容视图一样.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/dark_blue">
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_marginTop="3dp"
    android:layout_marginLeft="3dp"
    android:layout_marginBottom="3dp"
    android:layout_marginRight="3dp"
    android:id="@+id/home_addr_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1">

</android.support.v4.view.ViewPager>
<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/dots"
        />
</RelativeLayout>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

layout android

5
推荐指数
1
解决办法
9526
查看次数

使用Mockito和TestNG

我使用Mockito为JUnit编写了一个工作测试,并尝试使其适应TestNG,但奇怪的是使用TestNG只有一个测试可行.

我认为它与模拟器的重置有某种关系,但是我试图调用Mockito.reset并使用BeforeMethod和BeforeClass以及不同的组合,但仍然只能通过一个测试.

我需要做些什么来让测试工作?

@BeforeClass
public void setUp() {       
    MockitoAnnotations.initMocks(this);                                
    mockMvc = MockMvcBuilders.standaloneSetup(calculatorController).build();
}

@AfterMethod
public void reset() {
    Mockito.reset(calculatorService);
}

@Test
public void addFunctionTest() throws Exception {             
    Assert.assertNotNull(calculatorController);
     Result expectedResult = new Result();
     expectedResult.setResult(10);

    when(calculatorService.add(anyInt(), anyInt())).thenReturn(expectedResult);                             

    mockMvc.perform(get("/calculator/add").accept(MediaType.APPLICATION_JSON_VALUE)
            .param("val1", "100")
            .param("val2", "100"))  
    .andExpect(content().contentType("application/json"))
    .andExpect(status().isOk())
    .andExpect(jsonPath("$.result", equalTo(10)));    

    verify(calculatorService, times(1)).add(anyInt(), anyInt());
}   

@Test
public void subtractFunctionTest() throws Exception {            
    Assert.assertNotNull(calculatorController);
    Result expectedResult = new Result();
    expectedResult.setResult(90);

    when(calculatorService.subtract(anyInt(), anyInt())).thenReturn(expectedResult);                                

    mockMvc.perform(get("/calculator/subtract").accept(MediaType.APPLICATION_JSON_VALUE)
    .param("val1", "100")
    .param("val2", "10"))  
    .andExpect(content().contentType("application/json"))
    .andExpect(status().isOk())
    .andExpect(jsonPath("$.result", equalTo(90)));    

    verify(calculatorService, times(1)).subtract(anyInt(), anyInt());
}
Run Code Online (Sandbox Code Playgroud)

对于未设置内容类型或预期结果错误的断言,第二个测试似乎总是失败.

似乎第一次测试的响应在某种程度上在第二次测试中被评估,因此显然是错误的! …

testng spring unit-testing mockito

5
推荐指数
1
解决办法
4838
查看次数

映射器是适配器模式的一个版本

我一直试图让我的头围绕适配器模式,在所有模式中,我最难想象它的用途.

我想我明白了实现了什么,对我而言,它是将对象转换为另一个接口,以便客户端可以使用它.

在示例中,我看到它们有意义,但我觉得我可以使用一个映射器实现相同的功能,该映射器接受一个对象并将其属性(也可能应用一些逻辑)映射到所需的对象类型,因此使用真实对象.

是否存在差异,或者它们的名称是否相同?

java adapter mapper

5
推荐指数
1
解决办法
1812
查看次数

对于函数调用断言,Python pytest 模拟失败并显示“assert None”

我正在尝试模拟对 boto3 的一些调用,看起来被模拟的函数正在返回正确的值,并且看起来如果我更改断言使其不再匹配断言中传递的内容失败,因为输入参数不匹配,但是如果我让它们匹配,那么断言失败:

E       AssertionError: assert None
E        +  where None = <bound method wrap_assert_called_with of <MagicMock name='get_item' id='139668501580240'>>(TableName='TEST_TABLE', Key={'ServiceName': {'S': 'Site'}})
E        +    where <bound method wrap_assert_called_with of <MagicMock name='get_item' id='139668501580240'>> = <MagicMock name='get_item' id='139668501580240'>.assert_called_with
E        +      where <MagicMock name='get_item' id='139668501580240'> = <botocore.client.DynamoDB object at 0x7f071b8251f0>.get_item
E        +        where <botocore.client.DynamoDB object at 0x7f071b8251f0> = site_dao.ddb_client
Run Code Online (Sandbox Code Playgroud)

dynamo DB 对象是一个全局变量。

ddb_client = boto3.client("dynamodb")

def query_ddb():
        """Query dynamo DB for the current strategy.

        Returns:
            strategy (str): The latest strategy from dynamo DB. …
Run Code Online (Sandbox Code Playgroud)

python unit-testing pytest pytest-mock

5
推荐指数
1
解决办法
1582
查看次数

Pandas 使用 XLSX Writer - 恒定内存/内存中表现出色

我正在使用 pandas 并xlsxwriter在 AWS lambda 中创建 Excel 报告。我遇到了一个问题:创建 60MB 区域内相当大的 Excel 文件时,磁盘空间已满,但还有 512MB 的可用磁盘空间。

我一直在试图弄清楚发生这种情况的原因和原因,并且我发现了一个看起来很有前途的属性,我可以通过,constant_memory所以我使用以下代码尝试了这一点:

with pd.ExcelWriter(output, options={"constant_memory": True}) as writer:
Run Code Online (Sandbox Code Playgroud)

看来这实际上确保了我的 lambda 始终如一地运行完成,如果我删除它,它就不再完成,但问题是我收到以下警告:

FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead.
    with pd.ExcelWriter(output, options={"constant_memory": True}) as writer:
Run Code Online (Sandbox Code Playgroud)

然后我读了一篇关于 SO 的文章,我认为作者建议xlsxwriter这个属性在使用 pandas 时实际上不起作用。这一点很明显,因为我只得到了 Excel 报告中的第一列和 360000 行的最后一行。我很困惑如何通过这个来确保我的 lambda 完成0?为什么如果我不通过它,那么我的 lambda 就会耗尽磁盘空间?

第二个奇怪的事情是 pandas 的文档options根本没有提到任何调用的参数,如果我尝试constant_memory使用engine_kwargs

with pd.ExcelWriter(output, engine_kwargs={'constant_memory': True}) as writer:
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

TypeError: __init__() got an unexpected keyword …
Run Code Online (Sandbox Code Playgroud)

pandas xlsxwriter

5
推荐指数
1
解决办法
5780
查看次数