[PATCH v3 02/11] test_driver: Introduce testIOThreadInfo and generate IOThread infos

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Introduce testIOThreadInfo to store IOThread infos: iothread_id,
poll_max_ns, poll_grow and poll_shrink for future usage.

Add an example of IOThread configuration to testdomfc4.xml, we also want
to generate default testIOThreadInfo for the IOThread configured in the
xml, so introduce testDomainGenerateIOThreadInfos, the values are taken
from QEMU.

Signed-off-by: Luke Yue <lukedyue@xxxxxxxxx>
---
 examples/xml/test/testdomfc4.xml |  5 +++++
 src/test/test_driver.c           | 37 ++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+)

diff --git a/examples/xml/test/testdomfc4.xml b/examples/xml/test/testdomfc4.xml
index 26b7f25a06..cb4dd0cf70 100644
--- a/examples/xml/test/testdomfc4.xml
+++ b/examples/xml/test/testdomfc4.xml
@@ -11,6 +11,11 @@
   <memory>261072</memory>
   <currentMemory>131072</currentMemory>
   <vcpu>1</vcpu>
+  <iothreads>2</iothreads>
+  <iothreadids>
+    <iothread id="2"/>
+    <iothread id="4"/>
+  </iothreadids>
   <devices>
     <disk type='file'>
       <source file='/u/fc4.img'/>
diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index 7c3bb70be3..5c875ae7ee 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -182,6 +182,14 @@ struct _testDomainNamespaceDef {
     xmlNodePtr *snap_nodes;
 };
 
+typedef struct _testIOThreadInfo testIOThreadInfo;
+struct _testIOThreadInfo {
+    unsigned int iothread_id;
+    unsigned long long poll_max_ns;
+    unsigned int poll_grow;
+    unsigned int poll_shrink;
+};
+
 static void
 testDomainDefNamespaceFree(void *data)
 {
@@ -380,6 +388,9 @@ struct _testDomainObjPrivate {
     /* used by get/set time APIs */
     long long seconds;
     unsigned int nseconds;
+
+    /* used by IOThread APIs */
+    GArray *iothreads;
 };
 
 
@@ -396,6 +407,8 @@ testDomainObjPrivateAlloc(void *opaque)
     priv->seconds = 627319920;
     priv->nseconds = 0;
 
+    priv->iothreads = g_array_new(FALSE, FALSE, sizeof(testIOThreadInfo));
+
     return priv;
 }
 
@@ -426,6 +439,8 @@ static void
 testDomainObjPrivateFree(void *data)
 {
     testDomainObjPrivate *priv = data;
+
+    g_array_free(priv->iothreads, TRUE);
     g_free(priv);
 }
 
@@ -695,6 +710,26 @@ testDomainGenerateIfnames(virDomainDef *domdef)
     return 0;
 }
 
+static void
+testDomainGenerateIOThreadInfos(virDomainObj *obj)
+{
+    size_t i;
+    testDomainObjPrivate *priv;
+
+    if (!obj->def->iothreadids || !obj->def->niothreadids)
+        return;
+
+    priv = obj->privateData;
+
+    for (i = 0; i < obj->def->niothreadids; i++) {
+        testIOThreadInfo iothread;
+        iothread.iothread_id = obj->def->iothreadids[i]->iothread_id;
+        iothread.poll_max_ns = 32768;
+        iothread.poll_grow = 0;
+        iothread.poll_shrink = 0;
+        g_array_append_val(priv->iothreads, iothread);
+    }
+}
 
 static void
 testDomainShutdownState(virDomainPtr domain,
@@ -1045,6 +1080,8 @@ testParseDomains(testDriver *privconn,
 
         testDomainObjCheckTaint(obj);
 
+        testDomainGenerateIOThreadInfos(obj);
+
         virDomainObjEndAPI(&obj);
     }
 
-- 
2.32.0




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux