问题标签 [isolation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - 在编码的 UI 测试中使用 Microsoft.Fakes 框架
我正在为我的 Web 应用程序进行编码 UI 测试。试图隔离存储库方法调用,就像我在单元和集成测试中所做的那样,即使用 Microsoft.Fakes 框架。但是对于 UI 测试,Fake 似乎不起作用,因为仍然调用真正的方法而不是 shim。如果没有隔离 UI 测试会影响数据库(例如在测试注册过程时添加新用户),从而使其不可重用。所以想知道是否可以伪造/模拟这些方法并避免在每次我需要运行那些编码的 UI 测试时设置测试数据库和测试网站。
没有找到与此问题相关的太多有用信息,因此将不胜感激。
如果需要,这里是一个非常简单的示例的链接: https ://www.dropbox.com/s/m6les7pmto14njq/TestCodedUITest.zip 这是一个带有一个类库的 VS 2012 解决方案(包含一个带有方法的类,它只是抛出异常),一个 Web 应用程序(包含一个带有一个按钮的页面,它调用上述方法),最后一个编码的 UI 测试包含该方法的 shim 并简单地打开 IE,导航到页面并单击按钮。
php - 当我的 LinkedIn 公共个人资料页面作为 HTML 包含在 DIV 中时,它会接管我自己的 jQuery,包括我该如何阻止它?
我无法处理来自 LinkedIn 的整个会员资料 auth thingy,我只想将我们的公开资料放到我们网站上的资料部分:
我可以使用 php 包含来执行此操作,一切都很好,除了它破坏了我的页面上已经存在的 jQuery,因此选项卡及其内容不起作用。
我怎样才能隔离LinkedIn HTML refs,只影响它所在的这个名为配置文件的DIV ,从而仍然让我的选项卡正常工作?
目前它也影响全局 CSS。
这是根本不起作用的 iframe 代码,只是一个空白框:
编辑 3
所以这是直接从linkedin站点复制的api页面,其中包含我的api密钥号,这给了我这个错误:
在我看来, ' 正在打开或关闭一些它之后无法读取的东西......在dreamweaver中,除了第6行之外,该行没有语法错误或任何东西,其中的关键是有一个使没有意义...一开始的数字 5 是红色的,但是如果我从下往上构建它,我可以让 Robbie Miller 出现,但是一旦我构建了它在 JS 中要求的配置文件 div,它就会这样做`
.net - 运行多个相互独立的 WebBrowser
我有一个用 C# 4.0 开发的 Windows 应用程序,我在其中使用多个 WebBrowser 控件,其中所有 WebBrowser 加载相同的网站 URL 并通过在文本框中设置搜索值并单击搜索按钮来执行某种搜索。
所有的网络浏览器都应该一次搜索不同的关键字。当每个单独运行时它们都可以正常工作,但是当它们一起运行时,它们都在搜索相同的关键字而不是不同的关键字!并且关键字不是第一个/最后一个;这是一个随机选择的。我已经在 DocumentCompleted 中实现了代码。
我相信网站本身正在识别首先搜索的关键字之一并将其设置在所有 WebBrowser 窗口中。有没有办法单独和并行运行所有这些 WebBrowser,以便每个“会话”不会影响另一个?
mongodb - 产生锁可以打破查询隔离吗?
Mongo 文档讨论产生锁的查询以避免阻塞其他操作。Mongo 是否会产生从读取到写入的锁来改变读取结果?
假设我有文档{x:1}, {x:2}, {x:2}, {x:1}
并且正在阅读find({x:2})
。假设第四个文档不在工作集中,所以 Mongo 页面错误,将update({x:1}, {x:2}, {multi: true})
锁交给find
. 该查找现在将包括第四个文档,但省略了第一个文档。Monogo 是这样工作的吗?
linux - 构建环境隔离和文件系统差异
好吧,所以在第 n 次尝试追踪各种软件的依赖关系并复制各种人为所有不同的 Linux 发行版所做的工作之后,我想知道是否有更好的方法来捆绑各种软件到一个 .rpm 或 .deb 文件中以便于分发。
我目前的设置是各种工具的科学怪人,但主要是 Vagrant 和 libguestfs(从在 Fedora 中运行的源代码构建,因为实际上没有一个发行版附带它virt-diff
)。以下是我目前遵循的步骤:
- 使用 Vagrant box 或通过 live CD 创建一个基本操作系统。
- 导出
.vmdk
并调用它base-image
。 - 旋转上一个图像的精确副本并前往城镇:使用包管理器或其他方式来下载、编译和安装我需要的所有部分。再次导出
.vmdk
并调用它non-base-image
。 - 使两个基本镜像都可用于具有 libguestfs 的 Fedora 来宾操作系统。
- 用于
virt-diff
区分两个图像并将该数据转储到名为diff
. - 运行几个 ruby 脚本以将其
diff
转换为另一种格式,其中包含我需要的信息,并且没有我不喜欢的/var
. - 运行另一个脚本以生成
guestfish
带有一堆命令的命令脚本copy-out
。 - 运行
guestfish
脚本。 - 运行另一个脚本来重新生成符号链接,
diff
因为guestfish
不能这样做。 - 将生成的文件夹结构转换为 .deb 或 .rpm 文件并发布。
我想知道是否有更好的方法来做到这一点。你会认为会有,但我还没有弄清楚。
locking - 需要基于 Cassandra 的用例的设计和实现输入
我打算将来自商业网站的大批量订单交易记录存储到存储库(这里必须使用 cassandra,这是我们的数据库)。让我们将此组件称为commerceOrderRecorderService。
问题的第二部分是 - 我想处理这些订单并推送到其他下游系统。这个组件可以称为batchCommerceOrderProcessor。
commerceOrderRecorderService 和 batchCommerceOrderProcessor 都将在 Java 平台上运行。
我需要对这些组件的设计提出建议。特别是下面的:
commerceOrderRecorderService
考虑到性能和可扩展性,他设计色谱柱的最佳方式是什么?我是否应该将整个订单(复杂实体)存储为单个 JSON 对象。订单属性没有搜索要求。我们至少可以等到它们被批处理器处理。考虑 - 单个订单可以包含许多子项目 - 在处理时,每个子项目都可以以不同方式完成。为这种数据结构设计列可能是一种矫枉过正
什么应该是关键,因为数据量会很高。假设在高峰期每秒进行 10 次交易。在 cassandra 中创建此类事务数据的任何库或最佳实践?TTL也能有效使用吗?
batchCommerceOrderProcessor
- 应该如何检索行进行处理?
- 如何确保批处理器的多线程实现(也可能在多个节点上运行)将具有行级隔离。也就是说,没有两个实例会同时读取和处理同一行。没有重复处理。
- 如何在一段时间后清除数据,同时对压缩等 cassandra 进程友好。
欣赏设计输入、代码示例和库指针。谢谢。
linux - 如何在 linux 上隔离旧版本的 chrome
我需要在我的 ubuntu saucy 上运行 chrome 25 来测试 Web 应用程序。我不想替换我当前版本的 chrome,并且想知道是否有一种简单的方法来隔离程序?我在 Chromebook 像素上的 chroot 中运行 ubuntu,所以不需要 kvm。
python - Python中的进程隔离
我知道使用该subprocess
模块来隔离可能出现段错误的功能。这有效:
我想弄清楚的是为什么multiprocessing
没有相同的效果。这似乎不起作用:
这不是也创建了一个独立的流程吗?我在这里缺少一个核心概念吗?
背景:我正在隔离一个大型第三方 C 库以防止出现段错误。我知道处理段错误的最好方法是修复它们,但是这个库真的很大。
java - Spring事务隔离不起作用
我正在制作一个非常简单的示例来测试 Spring 隔离。我有 2 个非常相似的 Schedule 课程:
另外,我有 2 个非常相似的服务类:
运行这段代码后,我可以看到当两个事务同时执行时,两个事务都从数据库中获取相同的值。因此,他们忽略了对另一个的修改。我想这是事务隔离中的错误:
这里的 credits 值应该是 10。
在此之后,由于两个进程没有同时执行,因此计算开始正常:
我正在使用 MYSQL,这些是我的任务和事务配置:
出于某种原因,我的默认隔离级别是null。我从这个得到它:
因此,我尝试更改这两个服务的隔离级别:
结果仍然是错误的。
你知道为什么会这样吗?
提前致谢。
python - 将函数与运行时隔离
我不知道怎么称呼它,如果有人能想到更好的标题,请告诉我,我会重命名这个问题。
这不是现实生活中的例子,但如果我能解决这种情况,我会在更大的项目中使用它。假设我必须像下面描述的那样做,我不能改变这个想法,我需要找到适合它的解决方案。目前我不允许展示原始项目的更多细节。
主意:
所以,假设我正在基于 YAPSY 插件创建类似 cron 的东西。我想将插件存储在某个目录中,有时我的守护进程会从该目录中收集所有插件,调用它们的方法并再休眠一段时间。这些插件应该能够访问一些单例,它将存储一些数据,例如插件使用的 URL 等。我还在同一进程中运行 TCP 服务器,它将修改这个单例,所以我可以在运行时自定义行为。TCP 服务器应该对单例具有读/写访问权限,并且插件应该具有只读访问权限。可能有许多单例(我的意思是,许多类表现为单例,一个类的实例不多,呃)插件可读并且可以由 TCP 服务器修改。调用插件方法时会在调用它们之前生成一些值,
问题:
如何授予对插件的只读访问权限?我想要完全隔离,所以如果singleton
有字段x
,它是对象,那么singleton.x
(like singleton.x.y
) 的字段也应该是插件的只读字段。只读意味着插件应该能够修改这些字段,但它不会对运行时的其余部分产生任何影响,因此当插件方法返回时,单例(及其字段和它们的字段等)应该与在运行插件方法之前,所以它不是真正的只读。此外,插件可能以并发方式运行,并释放 GIL 一段时间(它们可能有 IO 操作,或者只是使用 time.sleep())。
- 编辑 -
解决方案必须是多平台的,并且至少可以在 Linux、Windows 和 MacOS 上运行。
- /编辑 -
方法:
我可以尝试在单例方法中检查堆栈以查看是否有任何调用者是插件,如果是,则存储任何修改字段的原始值。然后,在插件方法调用之后,我将使用函数 restore() 将单例恢复到运行插件之前的状态。
我可以尝试在另一个进程中运行插件方法,使用多处理,将所有单例传递(很容易做到,通过使用元类来跟踪所有这些,并在新进程中重建它们,或者在某处显式存储单例)到子进程。
我可以尝试将
globals()
and包装locals()
到一些dict
s 中,这将执行与第 (1) 点类似的技巧(恢复原始值),或者将深度复制所有全局变量和局部变量,并exec
使用插件方法的代码(而不是字符串,我知道这是不安全的)。
为什么上面的方法不起作用?
(1):堆栈检查通常是错误的,我想说在这种情况下是非常错误的。此外,每次调用后恢复变量可能会非常昂贵,因为插件会进行许多修改。此外,插件方法可能以并发方式运行,因此我需要在每次发布 GIL 时恢复原始值,并在获取 GIL 时恢复插件范围的值 - 这会造成很大的伤害(你能想象实现这个吗?在这一刻,我不能,我对此并不感到抱歉)。
(2): YAPSY 插件不可挑选,因此我无法将它们发送到子进程。
(3):exec()
不会执行带有自由变量的代码,它看不到调用它的范围,所以我需要找到插件函数的所有自由变量(我会使用包装器,在运行时生成,像这样:
并通过no_args_plugin_call.__code__
) 并将它们存储在 Wrapped 中locals()
。此外,整个环境的深拷贝将与(1)中一样昂贵。
PS。“字段”是指“属性”,因为我(不幸的是)在 Java 等方面长大。
聚苯乙烯。如果您听说过任何类似于 YAPSY 的插件系统(它必须具有所有功能并且是轻量级的)并且会生成可挑选的实例,那对我来说就足够了;)