<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # integreation test(集成測試) 原文鏈接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.3/integration-tests.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/integration-tests.html) 譯文鏈接 : [integreation test(集成測試)](/pages/viewpage.action?pageId=10027643) 貢獻者 : 廖建博,[ApacheCN](/display/~apachecn),[Apache中文網](/display/~apachechina) ## integration test (集成測試) 只有所有的運算集群都運行后,集成測試才能開始運行。和單元測試相比,集成測試花費的時間更多,但是集成測試基礎結構通過僅重新開啟整個集群試圖將花費的時間最小化(如果配置已經確定了)。 如果您要進行集成測試,則您的測試類需要繼承?ESIntegTestCase類。通過繼承此類,您只需要確保至少有一定數量的節點啟動,而不再需要在測試中手動啟動彈性搜索節點。您通過在測試運行中指定不同的系統屬性,完成大量的配置集成測試。 有關更多信息,請參閱源存儲庫中的 ?TESTING.asciidoc 。 ## number of shards (碎片數) 集成測試期間,除非通過在創建索引時重寫索引設置,否則索引創建的分片數量在1~10 之間隨機生成。 除非一定需要,否則默認規則不會指定碎片數量,以便未來每次測試都將一直使用不同的分片。 或者,您可以重寫 numberOfShards() 方法。 這方法同樣適用于 numberOfReplicas()。 ## generic helper methods (通用幫助方法) ESIntegTestCase 中有幾種幫助方法,這將使您的測試更簡潔。 | `refresh()` | 刷新集群中的所有索引 | | `ensureGreen()` | 確定集群狀態處于綠色健康狀態,等待搬遷。 默認等待30秒,30秒后,超時失敗。 | | `ensureYellow()` | 確定集群狀態處于黃色健康狀態,同樣等待30秒,30秒后,超時失敗。 | | `createIndex(name)` | 創建具有指定名稱的索引 | | `flush()` | 刷新集群中的所有索引 | | `flushAndRefresh()` | 集合 flush()和 refresh()調用 | | `forceMerge()` | 等待所有的遷移完成,并強制將集群中的所有索引合并到一個段。 | | `indexExists(name)` | 檢查給定索引是否存在 | | `admin()` | 返回用于管理任務的AdminClient | | `clusterService()` | 返回集群服務java類 | | `cluster()` | 返回測試集群類,這將在下一段中進行說明 | ## test cluster methods (集群測試方法) InternalTestCluster 類是隨機測試中集群功能的核心功能,并允許您配置特定設置或重播某些類型的中斷,以檢查自定義代碼的運行反應。 | `ensureAtLeastNumNodes(n)` | 確保集群中最少運行n個節點 | | `ensureAtMostNumNodes(n)` | 確保集群中最多運行n個節點 | | `getInstance()` | 從指定節點中獲取一個 guice 類實例化實例 | | `getInstanceFromNode()` | 從隨機節點中獲取一個 guice 類實例化實例 | | `stopRandomNode()` | 隨機停止集群中的節點以模擬中斷 | | `stopCurrentMasterNode()` | 停止當前主節點,并強制選擇新的主節點 | | `stopRandomNonMaster()` | 隨機停止集群中的非主節點以模擬中斷 | | `buildNode()` | 創建一個新的 elasticsearch 節點 | | `startNode(settings)` | 創建并開始一個新的 elasticsearch 節點 | ## changing node settings(改變節點設置) 如果要確保節點的一定配置,讓它們作為EsIntegTestCase的一部分啟動,,您可以重寫nodeSettings()方法 **changing node setting** ``` public class Mytests extends ESIntegTestCase { @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder().put(super.nodeSettings(nodeOrdinal)).put("node.mode", "network").build(); } ``` ## Accessing clients (訪問客戶端) 為了執行任何操作,您需要使用客戶端。您可以使用 ESIntegTestCase.client()方法來獲取隨機客戶機。該客戶端可以是 TransportClient 或 NodeClient,通常只要程序開始執行后就無需過多關心。?在InternalTestCluster類中有多種客戶端選擇方法,可以使用ESIntegTestCase.internalCluster()方法對其進行使用。 | `iterator()` | 所有可用客戶端上的迭代器 | | `masterClient()` | 返回連接到主節點的客戶端 | | `nonMasterClient()` | 返回未連接到主節點的客戶端 | | `clientNodeClient()` | 返回在客戶機節點運行的客戶端 | | `client(String nodeName)` | 將客戶端返回給指定節點 | | `smartClient()` | 智能返回客戶端 | ## Scoping(范圍) 在默認情況下,每個測試組件都使用唯一的集群進行測試。在每一個的測試中都刪除了他們之間的索引和模板。然而有些時候,您需要為每個測試啟動一個新的集群——比如:您想加載某個插件,而不想在每一個測試中加載它。 您可以在類級別上使用 @ClusterScope 注釋來配置此行為。 **Scoping** ``` @ClusterScope(scope=TEST, numDataNodes=1) public class CustomSuggesterSearchTests extends ESIntegTestCase { // ... tests go here } ``` 上述例子為每個測試方法進行配置,配置內容為在測試中使用新的集群。默認范圍是 SUITE (測試方法中所有方法的一個集群)。numDataNodes設置允許您只啟動一定數量的數據節點,這可以加速測試執行,因為啟動新節點是一項費用高昂且耗時的操作,可能不需要此測試。 默認情況下,測試基本結構將隨機啟動指定主節點。如果要禁用指定主節點,可以用與numDataNodes 類似的設置方式設置 supportsDedicatedMasters = false。如果不使用指定主節點,普通數據節點也將被允許成為主節點。 ## Changing plugins via configuration(通過配置更改插件) 當 elasticsearch 使用 JUnit 4 時,使用 @Before 和?@After 注釋時是沒有問題的。然而,您應該記住,這點在集群設置中沒有任何影響,因為當運行這些方法時,集群已經處于啟動并運行的狀態。所以,您如果想在節點運行前配置這些設置,如:在節點啟動前載入插件,您應該重寫 ESIntegCase這個類中的nodePlugins() 方法,并返回每個節點應加載的插件類。 **Changing plugins via configuration** ``` @Override protected Collection<Class<? extends Plugin>> nodePlugins() { return Arrays.asList(CustomSuggesterPlugin.class); } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看