小编ore*_*tis的帖子

集成测试期间的 ASP.NET Core 3 模拟授权

我正在使用 ASP.NET 核心来构建 API,并且我正在尝试从 .NET 核心 2.2 升级到 .NET 核心 3.1。

我正在使用该[Authorize]属性来保护 API 端点,并且我想在集成测试期间绕过它。

我设法创建了一个自定义的 AuthenticationHandler 来验证一个假用户,以及一个授权任何人(包括匿名用户)的授权处理程序。

我的问题是注入到身份验证处理程序中的用户没有传播到授权处理程序并且过滤器DenyAnonymousAuthorizationRequirement失败,因为上下文中的用户为空。

有没有人处理过类似的事情?

顺便说一下,这个类DenyAnonymousAuthorizationRequirement是一个 Microsoft 类,我复制了它在 IDE 中出现的代码,只是为了在这里发帖。

我的自定义 AuthenticationHandler:

  public class TestAuthHandler : AuthenticationHandler<AuthenticationSchemeOptions>
  {
        public TestAuthHandler(IOptionsMonitor<AuthenticationSchemeOptions> options,
                               ILoggerFactory logger,
                               UrlEncoder encoder,
                               ISystemClock clock)
            : base(options, logger, encoder, clock) { }

        protected override Task<AuthenticateResult> HandleAuthenticateAsync()
        {
            ClaimsPrincipal fakeUser = FakeUserUtil.FakeUser();
            var ticket = new AuthenticationTicket(fakeUser, "Test");
            var result = AuthenticateResult.Success(ticket);
            return Task.FromResult(result);
        }
  }
Run Code Online (Sandbox Code Playgroud)

授权要求:

public class …
Run Code Online (Sandbox Code Playgroud)

c# asp.net integration-testing

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

使用 Moq 监视对象 (C#)

我正在构建一个 .NET Core 应用程序,并且想使用 Moq 监视实例化对象,但我还没有找到实现此目的的方法。

基本上,我需要的是这里所描述的间谍活动。

我发现我可以Foo使用以下方式调用类的基类方法:

 var mock = new Mock<Foo>();
 mock.CallBase = true;
Run Code Online (Sandbox Code Playgroud)

我的问题是 Moq 将创建 Foo 的一个新实例,而我需要的是使用一个已经实例化的对象,并在调用该对象的实际函数时仅模拟真实对象的一种方法。

这是我想要监视的对象的结构。

    public class Foo:Boo
    {
       Foo(Propeties props):base(props){}

       public Baz MockMe(){...}

       public Daz DoNotMockMe(){ 
           return DoSomethingWith(Properties);
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# moq spy

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

如何获取上传文件的路径

我正在谷歌云上运行一个火花集群,我上传了每个作业的配置文件.使用submit命令上传的文件的路径是什么?

在下面的示例中,如何Configuration.properties在初始化SparkContext之前读取文件?我正在使用Scala.

 gcloud dataproc jobs submit spark --cluster my-cluster --class MyJob  --files  config/Configuration.properties --jars my.jar  
Run Code Online (Sandbox Code Playgroud)

scala apache-spark google-cloud-dataproc

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

从本地 spark 实例读取 google storage gs:// 文件系统

问题很简单:您有一个本地 spark 实例(集群或只是在本地模式下运行它)并且您想从 gs:// 读取

google-cloud-storage apache-spark google-cloud-platform

4
推荐指数
2
解决办法
9163
查看次数

Gradle 清理并复制 JAR 文件

我正在使用 Gradle 构建一个 java 应用程序,我想将最终的 jar 文件传输到另一个文件夹中。我想复制每个上的文件build并删除每个上的文件clean

不幸的是,我只能完成其中一项任务,而不能同时完成两项任务。当我激活任务时copyJar,它成功复制了 JAR。当我包含该clean任务时,不会复制 JAR,如果其中有文件,则会将其删除。就好像有某个任务调用clean.

有什么解决办法吗?

plugins {
    id 'java'
    id 'base'
    id 'com.github.johnrengelman.shadow' version '2.0.2'
}
dependencies {
    compile project(":core")
    compile project("fs-api-reader")
    compile project(":common")
}

task copyJar(type: Copy) {
    copy {
        from "build/libs/${rootProject.name}.jar"
        into "myApp-app"
    }
}

clean {
    file("myApp-app/${rootProject.name}.jar").delete()
}

copyJar.dependsOn(build)

allprojects {
    apply plugin: 'java'
    apply plugin: 'base'

    repositories {
        mavenCentral()
    }

    dependencies {
        testCompile 'junit:junit:4.12'
        compile 'org.slf4j:slf4j-api:1.7.12'
        testCompile group: 'ch.qos.logback', name: …
Run Code Online (Sandbox Code Playgroud)

java gradle shadowjar

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

从谷歌云中的火花工作者获取日志输出

我正在 google 集群中运行一个 spark 作业,我试图在 RDD 映射过程中获取一些日志信息。快速示例:

object LoggerWrapper extends Serializable{
    @transient lazy val logger=Logger.getLogger("myLogger")
}
object Processing{
 ...
    rdd.map(x=>{
       LoggerWrapper.logger.info("processing:"+x)
       foo(x)
    })
   ...
  sparkContext.stop
 }
Run Code Online (Sandbox Code Playgroud)

我遵循此处描述的方法并结合Spark 网页中的说明。结果 log4j.properties 是最后显示的那个。该文件是使用--filesofgcloud命令的标志上传的(如下所示)。我还更新了 yarn-site.xml 文件,以便将该属性yarn.log-aggregation-enable设置为true.

我的第一个问题是,当我从主节点运行时,yarn logs -application <applicationID>总是收到错误消息“日志聚合尚未完成或未启用”。是否还需要采取其他措施来收集消息。

第二个问题是是否有可能在进程运行时在控制台输出中获取所有工作人员的日志消息。例如,如果 spark 作业是流式作业,那么我想在作业运行时获取消息。

log4j.properties:

log4j.appender.myConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.myConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.myConsoleAppender.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.RollingAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingAppender.File=${spark.yarn.app.container.log.dir}/spark.log
log4j.appender.RollingAppender.DatePattern='.'yyyy-MM-dd
log4j.appender.RollingAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingAppender.layout.ConversionPattern=[%p] %d %c %M - %m%n

log4j.appender.RollingAppenderU=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingAppenderU.File=${spark.yarn.app.container.log.dir}/sparkU.log
log4j.appender.RollingAppenderU.DatePattern='.'yyyy-MM-dd
log4j.appender.RollingAppenderU.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingAppenderU.layout.ConversionPattern=[%p] %d %c %M …
Run Code Online (Sandbox Code Playgroud)

log4j hadoop-yarn apache-spark google-cloud-platform google-cloud-dataproc

2
推荐指数
1
解决办法
1506
查看次数