Hello community,

here is the log from the commit of package yast2-iscsi-client for 
openSUSE:Factory checked in at 2016-02-25 21:58:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-iscsi-client (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-iscsi-client.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-iscsi-client"

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-iscsi-client/yast2-iscsi-client.changes    
2015-08-13 18:09:55.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.yast2-iscsi-client.new/yast2-iscsi-client.changes   
    2016-02-25 22:36:50.000000000 +0100
@@ -1,0 +2,13 @@
+Tue Feb 16 11:28:14 CET 2016 - [email protected]
+
+- fix syntax error in "publish" section of IscsiClientLib.rb
+- 3.1.25 
+
+-------------------------------------------------------------------
+Tue Feb  9 15:23:12 CET 2016 - [email protected]
+
+- display startup mode "onboot" for iBFT sessions and don't allow
+  to change the mode on 'Edit' screen (bnc#954509)
+- 3.1.24
+
+-------------------------------------------------------------------

Old:
----
  yast2-iscsi-client-3.1.23.tar.bz2

New:
----
  yast2-iscsi-client-3.1.25.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yast2-iscsi-client.spec ++++++
--- /var/tmp/diff_new_pack.De5lyT/_old  2016-02-25 22:36:51.000000000 +0100
+++ /var/tmp/diff_new_pack.De5lyT/_new  2016-02-25 22:36:51.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package yast2-iscsi-client
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-iscsi-client
-Version:        3.1.23
+Version:        3.1.25
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -29,7 +29,6 @@
 BuildRequires:  update-desktop-files
 BuildRequires:  yast2 >= 2.23.15
 BuildRequires:  yast2-devtools >= 3.1.10
-BuildRequires:  yast2-testsuite
 BuildRequires:  rubygem(rspec)
 
 Requires:       yast2-packager

++++++ yast2-iscsi-client-3.1.23.tar.bz2 -> yast2-iscsi-client-3.1.25.tar.bz2 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-iscsi-client-3.1.23/package/yast2-iscsi-client.changes 
new/yast2-iscsi-client-3.1.25/package/yast2-iscsi-client.changes
--- old/yast2-iscsi-client-3.1.23/package/yast2-iscsi-client.changes    
2015-08-11 15:47:11.000000000 +0200
+++ new/yast2-iscsi-client-3.1.25/package/yast2-iscsi-client.changes    
2016-02-16 11:57:08.000000000 +0100
@@ -1,4 +1,17 @@
 -------------------------------------------------------------------
+Tue Feb 16 11:28:14 CET 2016 - [email protected]
+
+- fix syntax error in "publish" section of IscsiClientLib.rb
+- 3.1.25 
+
+-------------------------------------------------------------------
+Tue Feb  9 15:23:12 CET 2016 - [email protected]
+
+- display startup mode "onboot" for iBFT sessions and don't allow
+  to change the mode on 'Edit' screen (bnc#954509)
+- 3.1.24
+
+-------------------------------------------------------------------
 Thu Jul 30 12:06:28 CEST 2015 - [email protected]
 
 - show error popup if target connection failed (bsc#9339537)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-iscsi-client-3.1.23/package/yast2-iscsi-client.spec 
new/yast2-iscsi-client-3.1.25/package/yast2-iscsi-client.spec
--- old/yast2-iscsi-client-3.1.23/package/yast2-iscsi-client.spec       
2015-08-11 15:47:11.000000000 +0200
+++ new/yast2-iscsi-client-3.1.25/package/yast2-iscsi-client.spec       
2016-02-16 11:57:08.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-iscsi-client
-Version:        3.1.23
+Version:        3.1.25
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -27,7 +27,7 @@
 License:        GPL-2.0
 # Service module switched to systemd
 BuildRequires: yast2 >= 2.23.15
-BuildRequires: docbook-xsl-stylesheets libxslt update-desktop-files 
yast2-testsuite
+BuildRequires: docbook-xsl-stylesheets libxslt update-desktop-files
 BuildRequires:  yast2-devtools >= 3.1.10
 BuildRequires:  rubygem(rspec)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-iscsi-client-3.1.23/src/include/iscsi-client/dialogs.rb 
new/yast2-iscsi-client-3.1.25/src/include/iscsi-client/dialogs.rb
--- old/yast2-iscsi-client-3.1.23/src/include/iscsi-client/dialogs.rb   
2015-08-11 15:47:11.000000000 +0200
+++ new/yast2-iscsi-client-3.1.25/src/include/iscsi-client/dialogs.rb   
2016-02-16 11:57:08.000000000 +0100
@@ -156,7 +156,7 @@
             ),
             Left(
               HBox(
-                PushButton(Id(:add), _("Add")), #                      
`PushButton(`id(`toggle), _("Toggle Start-Up"))
+                PushButton(Id(:add), _("Add")),
                 PushButton(Id(:edit), _("Edit")),
                 PushButton(Id(:del), _("Disconnect"))
               )
@@ -300,9 +300,12 @@
           "opt"    => [:hstretch, :notify],
           "label"  => _("Startup"),
           "items"  => [
-            ["manual", "manual"],
-            ["onboot", "onboot"],
-            ["automatic", "automatic"]
+            # iSCSI target has to be connected manually
+            ["manual", _("manual")],
+            # iSCSI target available at boot (respected by 'dracut')
+            ["onboot", _("onboot")],
+            # iSCSI target enabled automatically (by 'systemd')
+            ["automatic", _("automatic")]
           ]
         },
         # widget for portal address
@@ -503,6 +506,7 @@
       @current_tab = return_to
       caption = _("iSCSI Initiator Discovery")
       w = CWM.CreateWidgets(["startup", "conn_auth"], @widgets)
+
       contents = VBox(
         VStretch(),
         HBox(
@@ -528,6 +532,11 @@
         Label.BackButton,
         Label.NextButton
       )
+
+      if (IscsiClientLib.iBFT?(IscsiClientLib.getCurrentNodeValues))
+        UI.ChangeWidget(Id("startup"), :Enabled, false)
+      end
+
       ret = CWM.Run(
         w,
         { :abort => fun_ref(method(:ReallyAbort), "boolean ()") }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-iscsi-client-3.1.23/src/include/iscsi-client/widgets.rb 
new/yast2-iscsi-client-3.1.25/src/include/iscsi-client/widgets.rb
--- old/yast2-iscsi-client-3.1.23/src/include/iscsi-client/widgets.rb   
2015-08-11 15:47:11.000000000 +0200
+++ new/yast2-iscsi-client-3.1.25/src/include/iscsi-client/widgets.rb   
2016-02-16 11:57:08.000000000 +0100
@@ -230,41 +230,6 @@
           when :edit
             record = setRecord
             return :edit
-          when :toggle
-            # change manual/onboot status of connected target
-            # don't use automatic anymore (replaced by onboot) (bnc#449108)
-            record = setRecord
-            if Ops.greater_than(Builtins.size(record), 0)
-              Builtins.y2milestone("toggle record %1", record)
-              startup = IscsiClientLib.getStartupStatus
-              if Ops.greater_than(Builtins.size(startup), 0)
-                # toggle all 3 possible values (bnc#457252)
-                options = ["manual", "onboot", "automatic"]
-                pos = 0
-                Builtins.foreach(options) do |option|
-                  if startup == option
-                    startup = Ops.get(
-                      options,
-                      Ops.greater_than(Builtins.size(options), Ops.add(pos, 
1)) ?
-                        Ops.add(pos, 1) :
-                        0,
-                      ""
-                    )
-                    Builtins.y2milestone(
-                      "Changing state from %1 to %2",
-                      option,
-                      startup
-                    )
-                    IscsiClientLib.setStartupStatus(startup)
-                    raise Break
-                  end
-                  pos = Ops.add(pos, 1)
-                end
-                initConnectedTable("")
-              end
-            else
-              Popup.Error(_("No record found."))
-            end
         end
       end
       # if nothing selected - disable some buttons, otherwise enable them
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-iscsi-client-3.1.23/src/modules/IscsiClientLib.rb 
new/yast2-iscsi-client-3.1.25/src/modules/IscsiClientLib.rb
--- old/yast2-iscsi-client-3.1.23/src/modules/IscsiClientLib.rb 2015-08-11 
15:47:11.000000000 +0200
+++ new/yast2-iscsi-client-3.1.25/src/modules/IscsiClientLib.rb 2016-02-16 
11:57:08.000000000 +0100
@@ -190,45 +190,62 @@
       deep_copy(hidden)
     end
 
+    # Look for iSCSI boot firmware table (available only on special 
hardware/netcards)
+    #
+    # @return [String] stdout of command 'iscsiadm -m fw' (--mode fw)
+    #
+    def getFirmwareInfo
+      bios_info = SCR.Execute(path(".target.bash_output"), GetAdmCmd("-m fw"))
 
-    # get iBFT (available only on some special hardware)
+      bios_info["stdout"] || ""
+    end
+
+    # Takes the output of 'iscsiadm' either in 'node', 'session' or 'fw' mode, 
i.e.
+    # output where info is seperated by '=', like
+    # iface.transport_name = tcp
+    # iface.hwaddress = 42:52:54:00:8b:6a
+    # iface.bootproto = DHCP
+    #
+    #  @param [String]   stdout (where info is seperated by '=') of iscsiadm 
command
+    #  @return [Hash]    command output converted to hash
+    #
+    def nodeInfoToMap (stdout)
+      retval = {}
+      return retval if stdout.empty?
+
+      stdout.lines.each do |row|
+        key, val = row.split("=")
+
+        key = key.to_s.strip
+        if !key.empty?
+          retval[key] = val.to_s.strip
+        end
+      end
+
+      retval
+    end
+
+    # Get iBFT (iSCSI boot firmware table) info
+    #
+    # @return [Hash] iBFT data converted to a hash (passwords are hidden)
+    #
     def getiBFT
       if @ibft == nil
-        if !Arch.i386 && !Arch.x86_64
-          Builtins.y2milestone(
-            "Because architecture %1 is is different from x86, not using iBFT",
-            Arch.arch_short
-          )
-          return {}
-        end
         @ibft = {}
-        Builtins.y2milestone(
-          "check and modprobe iscsi_ibft : %1",
-          SCR.Execute(
-            path(".target.bash_output"),
-            "lsmod |grep -q iscsi_ibft || modprobe iscsi_ibft"
-          )
-        )
-        from_bios = Ops.get_string(
-          Convert.convert(
-            SCR.Execute(path(".target.bash_output"), GetAdmCmd("-m fw")),
-            :from => "any",
-            :to   => "map <string, any>"
-          ),
-          "stdout",
-          ""
-        )
-        Builtins.foreach(Builtins.splitstring(from_bios, "\n")) do |row|
-          key_val = Builtins.splitstring(row, "=")
-          #   if (size(key_val[0]:"")>0) ibft[key_val[0]:""] = key_val[1]:"";
-          kv = String.CutBlanks(Ops.get(key_val, 0, ""))
-          if Ops.greater_than(Builtins.size(kv), 0)
-            Ops.set(@ibft, kv, String.CutBlanks(Ops.get(key_val, 1, "")))
-          end
+
+        if !Arch.i386 && !Arch.x86_64
+          log.info "Because architecture #{Arch.arch_short} is different from 
x86, not using iBFT"
+          return @ibft
         end
+        ret = SCR.Execute(path(".target.bash_output"),
+                          "lsmod |grep -q iscsi_ibft || modprobe iscsi_ibft")
+        log.info "check and modprobe iscsi_ibft: #{ret}"
+
+        @ibft = nodeInfoToMap(getFirmwareInfo)
       end
-      Builtins.y2milestone("iBFT %1", hidePassword(@ibft))
-      deep_copy(@ibft)
+
+      log.info "iBFT: #{hidePassword(@ibft)}"
+      @ibft
     end
 
 
@@ -631,7 +648,7 @@
     def checkInitiatorName
       ret = true
       file = "/etc/iscsi/initiatorname.iscsi"
-      name_from_bios = Ops.get_string(getiBFT, "iface.initiatorname", "")
+      name_from_bios = getiBFT["iface.initiatorname"] || ""
       # if (size((map<string, any>)SCR::Read (.target.lstat, file)) == 0 || 
((map<string, any>)SCR::Read (.target.lstat, file))["size"]:0==0){
       @initiatorname = Ops.get_string(
         Convert.convert(
@@ -746,44 +763,63 @@
       ret
     end
 
-    # get (manual/onboot) status of target connecting
+    # Get info about current iSCSI node
+    #
+    # @return [Hash]    stdout of 'iscsiadm -m node -I <iface> -T <target> -p 
<ip>'
+    #                   converted to a hash
+    def getCurrentNodeValues
+      ret = SCR.Execute(path(".target.bash_output"),
+                        GetAdmCmd("-m node -I #{@currentRecord[2]||"default"} 
-T #{@currentRecord[1]||""} -p #{@currentRecord[0]||""}"))
+      return {} if ret["exit"] != 0
+
+      nodeInfoToMap(ret["stdout"] || "")
+    end
+
+    # Check whether iSCSI nodes are equal
+    #
+    # @param   [Hash]    iSCSI node values as hash
+    # @param   [Hash]    iSCSI node values as hash
+    #
+    # @return  [Bool]    nodes are equal?
+    #
+    def equalNodes?(n1, n2)
+      return false if n1.empty?
+
+      keys = [
+              "iface.transport_name",
+              "iface.initiatorname",
+              "node.name",
+              "node.conn[0].address"
+             ]
+
+      keys.all? { |key| n1[key] == n2[key] }
+    end
+
+    # Checks whether iSCSI session (values provided as hash) is iBFT session
+    #
+    # @param  [Hash]      iSCSI node values as hash
+    # @return [Bool]      is iSCSI session booted from firmware?
+    #
+    def iBFT?(node_info)
+      return equalNodes?(getiBFT, node_info)
+    end
+
+    # Get (manual/onboot/automatic) status of target connection
+    #
+    # @return [String]   startup status of the iSCSI node
+    #
     def getStartupStatus
-      status = ""
-      Builtins.y2milestone("Getting status of record %1", @currentRecord)
-      retcode = Convert.convert(
-        SCR.Execute(
-          path(".target.bash_output"),
-          GetAdmCmd(
-            Builtins.sformat(
-              "-m node -I %3 -T %1 -p %2",
-              Ops.get(@currentRecord, 1, ""),
-              Ops.get(@currentRecord, 0, ""),
-              Ops.get(@currentRecord, 2, "default")
-            )
-          )
-        ),
-        :from => "any",
-        :to   => "map <string, any>"
-      )
-      if Ops.greater_than(
-          Builtins.size(Ops.get_string(retcode, "stderr", "")),
-          0
-        )
-        return ""
-      end
-      Builtins.foreach(
-        Builtins.splitstring(Ops.get_string(retcode, "stdout", ""), "\n")
-      ) do |row|
-        if Builtins.issubstring(row, "node.conn[0].startup")
-          status = Ops.get(Builtins.splitstring(row, " "), 2, "")
-          raise Break
-        end
+      log.info "Getting status of record #{@currentRecord}"
+      curr_node = getCurrentNodeValues
+
+      if (iBFT?(curr_node))
+          # always show status "onboot" for iBFT (startup value from node 
doesn't matter)
+          log.info "Startup status for iBFT is always onboot"
+          return "onboot"
       end
-      Builtins.y2milestone(
-        "Startup status for %1 is %2",
-        @currentRecord,
-        status
-      )
+      status = curr_node["node.conn[0].startup"] || ""
+      log.info "Startup status for #{@currentRecord} is #{status}"
+
       status
     end
 
@@ -945,8 +981,8 @@
 
     def autoLogOn
       ret = true
-      Builtins.y2milestone("begin of autoLogOn function")
-      if Ops.greater_than(Builtins.size(getiBFT), 0)
+      log.info "begin of autoLogOn function"
+      if !getiBFT.empty?
         result = Convert.to_map(SCR.Execute(path(".target.bash_output"),
                                             GetAdmCmd("-m fw -l")))
         if result["exit"] != 0
@@ -1305,6 +1341,7 @@
           :from => "any",
           :to   => "list <map>"
         )
+
         hw_mods = Builtins.maplist(cards) do |c|
           Builtins.y2milestone("GetOffloadItems card:%1", c)
           tmp = Builtins.maplist(Ops.get_list(c, "drivers", [])) do |m|
@@ -1321,7 +1358,8 @@
           }
           Builtins.y2milestone("GetOffloadItems cinf:%1", r)
           deep_copy(r)
-        end
+        end    # maplist(cards)
+
         idx = 0
         Builtins.foreach(@offload) do |l|
           valid = false
@@ -1692,6 +1730,8 @@
     publish :function => :GetOffloadModules, :type => "list <string> ()"
     publish :function => :LoadOffloadModules, :type => "list <string> ()"
     publish :function => :GetDiscoveryCmd, :type => "string (string, string, 
map)"
+    publish :function => :getCurrentNodeValues, :type => "map <string, any> ()"
+    publish :function => :iBFT?, :type => "boolean (map <string, any>)"
   end
 
   IscsiClientLib = IscsiClientLibClass.new
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-iscsi-client-3.1.23/test/Makefile.am 
new/yast2-iscsi-client-3.1.25/test/Makefile.am
--- old/yast2-iscsi-client-3.1.23/test/Makefile.am      2015-08-11 
15:47:11.000000000 +0200
+++ new/yast2-iscsi-client-3.1.25/test/Makefile.am      2016-02-16 
11:57:08.000000000 +0100
@@ -1,6 +1,8 @@
 TESTS = \
   ipEqual_spec.rb       \
-  ScanDiscovered_spec.rb
+  saveConfig_spec.rb    \
+  ScanDiscovered_spec.rb \
+  getiBFT_spec.rb      
 
 TEST_EXTENSIONS = .rb
 RB_LOG_COMPILER = rspec
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-iscsi-client-3.1.23/test/getiBFT_spec.rb 
new/yast2-iscsi-client-3.1.25/test/getiBFT_spec.rb
--- old/yast2-iscsi-client-3.1.23/test/getiBFT_spec.rb  1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-iscsi-client-3.1.25/test/getiBFT_spec.rb  2016-02-16 
11:57:08.000000000 +0100
@@ -0,0 +1,66 @@
+#!/usr/bin/env rspec
+require_relative '../src/modules/IscsiClientLib'
+
+describe Yast::IscsiClientLibClass do
+
+  before :each do
+    @iscsilib = Yast::IscsiClientLibClass.new
+    @iscsilib.main() 
+  end
+
+  describe "#getiBFT" do
+    context "when filtering output of 'iscsiadm -m fw'" do
+      it "returns data in form of a map " do
+        allow(Yast::Arch).to receive(:architecture).and_return("x86_64")
+        allow(@iscsilib).to receive(:getFirmwareInfo).
+          and_return("# BEGIN RECORD 2.0-872\n"\
+                     "iface.bootproto = STATIC\n"\
+                     "iface.transport_name = tcp\n"\
+                     "iface.hwaddress = 00:00:c9:b1:bc:7f\n"\
+                     "iface.initiatorname = 
iqn.2011-05.com.emulex:eraptorrfshoneport1\n"\
+                     "iface.ipaddress = 
2620:0113:80c0:8000:000c:0000:0000:04dc\n"\
+                     "node.conn[0].address = 172.0.21.6\n"\
+                     "node.conn[0].port = 3260\n"\
+                     "node.name = iqn.1986-03.com.ibm:sn.135061874\n"\
+                     "# END RECORD\n"
+                     )
+
+        ibft_data = @iscsilib.getiBFT()
+
+        expect(ibft_data).to eq(
+                                {"# BEGIN RECORD 2.0-872" => "", 
+                                  "# END RECORD" => "", 
+                                  "iface.bootproto" => "STATIC", 
+                                  "iface.hwaddress" => "00:00:c9:b1:bc:7f", 
+                                  "iface.initiatorname" => 
"iqn.2011-05.com.emulex:eraptorrfshoneport1", 
+                                  "iface.transport_name" => "tcp",
+                                  "iface.ipaddress" => 
"2620:0113:80c0:8000:000c:0000:0000:04dc",
+                                  "node.conn[0].address" => "172.0.21.6", 
+                                  "node.conn[0].port" => "3260", 
+                                  "node.name" => 
"iqn.1986-03.com.ibm:sn.135061874"})
+      end
+    end
+
+    context "when could not get list of targets from firmware" do
+      it "returns an empty map " do
+        allow(Yast::Arch).to receive(:architecture).and_return("x86_64")
+        allow(@iscsilib).to receive(:getFirmwareInfo).and_return("")
+
+        ibft_data = @iscsilib.getiBFT()
+         
+        expect(ibft_data).to eq({})
+      end
+    end
+
+    context "when not on x86 hardware" do
+      it "returns an empty map " do
+        allow(Yast::Arch).to receive(:architecture).and_return("s390_64")
+        
+        ibft_data = @iscsilib.getiBFT()
+
+        expect(ibft_data).to eq({})
+      end
+    end
+
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-iscsi-client-3.1.23/test/saveConfig_spec.rb 
new/yast2-iscsi-client-3.1.25/test/saveConfig_spec.rb
--- old/yast2-iscsi-client-3.1.23/test/saveConfig_spec.rb       1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-iscsi-client-3.1.25/test/saveConfig_spec.rb       2016-02-16 
11:57:08.000000000 +0100
@@ -0,0 +1,305 @@
+#!/usr/bin/env rspec
+require_relative '../src/modules/IscsiClientLib'
+
+describe Yast::IscsiClientLibClass do
+  subject do
+    @iscsilib = Yast::IscsiClientLibClass.new
+    @iscsilib.main()
+    @iscsilib
+  end
+
+  describe "#getConfig,#saveConfig,#oldConfig" do
+    let(:etc_iscsid_all) { Yast::Path.new ".etc.iscsid.all" }
+    let(:etc_iscsid)     { Yast::Path.new ".etc.iscsid" }
+    let(:read_data) do
+      {
+        "comment" => "",
+        "file"    => -1,
+        "kind"    => "section",
+        "name"    => "",
+        "type"    => -1,
+        "value"   => [
+          {
+            "comment" => "#\n" +
+            "# Open-iSCSI default configuration.\n" +
+            "# Could be located at /etc/iscsid.conf or ~/.iscsid.conf\n" +
+            "#\n",
+            "kind"    => "value",
+            "name"    => "node.active_cnx",
+            "type"    => 1,
+            "value"   => "1"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.startup",
+            "type"    => 1,
+            "value"   => "manual"
+          },
+          {
+            "comment" => "#node.session.auth.username = 
dima\n#node.session.auth.password = aloha\n",
+            "kind"    => "value",
+            "name"    => "node.session.timeo.replacement_timeout",
+            "type"    => 1,
+            "value"   => "120"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.session.err_timeo.abort_timeout",
+            "type"    => 1,
+            "value"   => "10"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.session.err_timeo.reset_timeout",
+            "type"    => 1,
+            "value"   => "30"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.session.iscsi.InitialR2T",
+            "type"    => 1,
+            "value"   => "No"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.session.iscsi.ImmediateData",
+            "type"    => 1,
+            "value"   => "Yes"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.session.iscsi.FirstBurstLength",
+            "type"    => 1,
+            "value"   => "262144"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.session.iscsi.MaxBurstLength",
+            "type"    => 1,
+            "value"   => "16776192"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.session.iscsi.DefaultTime2Wait",
+            "type"    => 1,
+            "value"   => "0"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.session.iscsi.DefaultTime2Retain",
+            "type"    => 1,
+            "value"   => "0"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.session.iscsi.MaxConnections",
+            "type"    => 1,
+            "value"   => "0"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.cnx[0].iscsi.HeaderDigest",
+            "type"    => 1,
+            "value"   => "None"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.cnx[0].iscsi.DataDigest",
+            "type"    => 1,
+            "value"   => "None"
+          },
+          {
+            "comment" => "",
+            "kind"    => "value",
+            "name"    => "node.cnx[0].iscsi.MaxRecvDataSegmentLength",
+            "type"    => 1,
+            "value"   => "65536"
+          }
+        ]
+      }
+    end
+
+    let(:written_data) do
+      {
+        "comment" => "",
+        "file" => -1,
+        "kind" => "section",
+        "name" => "",
+        "type" => -1,
+        "value" => [
+          {
+            "comment" => "#\n# Open-iSCSI default configuration.\n# Could be 
located at /etc/iscsid.conf or ~/.iscsid.conf\n#\n",
+            "kind" => "value",
+            "name" => "node.active_cnx",
+            "type" => 1,
+            "value" => "1"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.startup",
+            "type" => 1,
+            "value" => "manual"
+          },
+          {
+            "comment" => "#node.session.auth.username = 
dima\n#node.session.auth.password = aloha\n",
+            "kind" => "value",
+            "name" => "node.session.timeo.replacement_timeout",
+            "type" => 1,
+            "value" => "120"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.session.err_timeo.abort_timeout",
+            "type" => 1,
+            "value" => "10"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.session.err_timeo.reset_timeout",
+            "type" => 1,
+            "value" => "30"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.session.iscsi.InitialR2T",
+            "type" => 1,
+            "value" => "No"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.session.iscsi.ImmediateData",
+            "type" => 1,
+            "value" => "Yes"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.session.iscsi.FirstBurstLength",
+            "type" => 1,
+            "value" => "262144"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.session.iscsi.MaxBurstLength",
+            "type" => 1,
+            "value" => "16776192"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.session.iscsi.DefaultTime2Wait",
+            "type" => 1,
+            "value" => "0"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.session.iscsi.DefaultTime2Retain",
+            "type" => 1,
+            "value" => "0"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.session.iscsi.MaxConnections",
+            "type" => 1,
+            "value" => "0"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.cnx[0].iscsi.HeaderDigest",
+            "type" => 1,
+            "value" => "None"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.cnx[0].iscsi.DataDigest",
+            "type" => 1,
+            "value" => "None"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.cnx[0].iscsi.MaxRecvDataSegmentLength",
+            "type" => 1,
+            "value" => "65536"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.session.auth.username",
+            "type" => 1,
+            "value" => "incuser"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "node.session.auth.password",
+            "type" => 1,
+            "value" => "incpass"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "discovery.sendtargets.auth.authmethod",
+            "type" => 1,
+            "value" => "CHAP"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "discovery.sendtargets.auth.username",
+            "type" => 1,
+            "value" => "outuser"
+          },
+          {
+            "comment" => "",
+            "kind" => "value",
+            "name" => "discovery.sendtargets.auth.password",
+            "type" => 1,
+            "value" => "outpass"
+          }
+        ]
+      }
+    end
+
+    it "mimics a legacy test" do
+      allow(Yast::SCR).to receive(:Read)
+        .with(etc_iscsid_all).and_return(read_data)
+      expect(subject.getConfig).to eq(read_data.fetch("value"))
+
+      expect(Yast::SCR).to receive(:Write)
+        .with(etc_iscsid_all, written_data).and_return(true)
+      expect(Yast::SCR).to receive(:Write)
+        .with(etc_iscsid, nil).and_return(true)
+      expect(subject.saveConfig("incuser", "incpass", "outuser", "outpass"))
+        .to eq(nil)
+
+      expect(Yast::SCR).to receive(:Write)
+        .with(etc_iscsid_all, read_data).and_return(true)
+      expect(Yast::SCR).to receive(:Write)
+        .with(etc_iscsid, nil).and_return(true)
+      expect(subject.oldConfig).to eq(nil)
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-iscsi-client-3.1.23/testsuite/Makefile.am 
new/yast2-iscsi-client-3.1.25/testsuite/Makefile.am
--- old/yast2-iscsi-client-3.1.23/testsuite/Makefile.am 2015-08-11 
15:47:11.000000000 +0200
+++ new/yast2-iscsi-client-3.1.25/testsuite/Makefile.am 1970-01-01 
01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
-#
-# Makefile.am for .../testsuite
-#
-# Do not edit this file (Makefile.am) as it will be overwritten!
-#
-
-AUTOMAKE_OPTIONS = dejagnu
-EXTRA_DIST = $(wildcard tests/*.out) $(wildcard tests/*.err) $(wildcard 
tests/*.rb)
-
-testsuite_prepare = @ydatadir@/testsuite/Makefile.testsuite
-
-all-local: $(testsuite_prepare)
-       make -f $(testsuite_prepare) RPMNAME=$(RPMNAME) srcdir=$(srcdir)
-
-clean-local: $(testsuite_prepare)
-       make -f $(testsuite_prepare) RPMNAME=$(RPMNAME) srcdir=$(srcdir) clean
-
-check-local: $(testsuite_prepare)
-       make -f $(testsuite_prepare) RPMNAME=$(RPMNAME) srcdir=$(srcdir) check
-
-# EOF
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-iscsi-client-3.1.23/testsuite/tests/SaveConfig.out 
new/yast2-iscsi-client-3.1.25/testsuite/tests/SaveConfig.out
--- old/yast2-iscsi-client-3.1.23/testsuite/tests/SaveConfig.out        
2015-08-11 15:47:11.000000000 +0200
+++ new/yast2-iscsi-client-3.1.25/testsuite/tests/SaveConfig.out        
1970-01-01 01:00:00.000000000 +0100
@@ -1,9 +0,0 @@
-Read   .target.tmpdir "/tmp"
-Read   .etc.iscsid.all $["comment":"", "file":-1, "kind":"section", "name":"", 
"type":-1, "value":[$["comment":"#\n# Open-iSCSI default configuration.\n# 
Could be located at /etc/iscsid.conf or ~/.iscsid.conf\n#\n", "kind":"value", 
"name":"node.active_cnx", "type":1, "value":"1"], $["comment":"", 
"kind":"value", "name":"node.startup", "type":1, "value":"manual"], 
$["comment":"#node.session.auth.username = dima\n#node.session.auth.password = 
aloha\n", "kind":"value", "name":"node.session.timeo.replacement_timeout", 
"type":1, "value":"120"], $["comment":"", "kind":"value", 
"name":"node.session.err_timeo.abort_timeout", "type":1, "value":"10"], 
$["comment":"", "kind":"value", "name":"node.session.err_timeo.reset_timeout", 
"type":1, "value":"30"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.InitialR2T", "type":1, "value":"No"], 
$["comment":"", "kind":"value", "name":"node.session.iscsi.ImmediateData", 
"type":1, "value":"Yes"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.FirstBurstLength", "type":1, "value":"262144"], 
$["comment":"", "kind":"value", "name":"node.session.iscsi.MaxBurstLength", 
"type":1, "value":"16776192"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.DefaultTime2Wait", "type":1, "value":"0"], 
$["comment":"", "kind":"value", "name":"node.session.iscsi.DefaultTime2Retain", 
"type":1, "value":"0"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.MaxConnections", "type":1, "value":"0"], 
$["comment":"", "kind":"value", "name":"node.cnx[0].iscsi.HeaderDigest", 
"type":1, "value":"None"], $["comment":"", "kind":"value", 
"name":"node.cnx[0].iscsi.DataDigest", "type":1, "value":"None"], 
$["comment":"", "kind":"value", 
"name":"node.cnx[0].iscsi.MaxRecvDataSegmentLength", "type":1, 
"value":"65536"]]]
-Return [$["comment":"#\n# Open-iSCSI default configuration.\n# Could be 
located at /etc/iscsid.conf or ~/.iscsid.conf\n#\n", "kind":"value", 
"name":"node.active_cnx", "type":1, "value":"1"], $["comment":"", 
"kind":"value", "name":"node.startup", "type":1, "value":"manual"], 
$["comment":"#node.session.auth.username = dima\n#node.session.auth.password = 
aloha\n", "kind":"value", "name":"node.session.timeo.replacement_timeout", 
"type":1, "value":"120"], $["comment":"", "kind":"value", 
"name":"node.session.err_timeo.abort_timeout", "type":1, "value":"10"], 
$["comment":"", "kind":"value", "name":"node.session.err_timeo.reset_timeout", 
"type":1, "value":"30"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.InitialR2T", "type":1, "value":"No"], 
$["comment":"", "kind":"value", "name":"node.session.iscsi.ImmediateData", 
"type":1, "value":"Yes"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.FirstBurstLength", "type":1, "value":"262144"], 
$["comment":"", "kind":"value", "name":"node.session.iscsi.MaxBurstLength", 
"type":1, "value":"16776192"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.DefaultTime2Wait", "type":1, "value":"0"], 
$["comment":"", "kind":"value", "name":"node.session.iscsi.DefaultTime2Retain", 
"type":1, "value":"0"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.MaxConnections", "type":1, "value":"0"], 
$["comment":"", "kind":"value", "name":"node.cnx[0].iscsi.HeaderDigest", 
"type":1, "value":"None"], $["comment":"", "kind":"value", 
"name":"node.cnx[0].iscsi.DataDigest", "type":1, "value":"None"], 
$["comment":"", "kind":"value", 
"name":"node.cnx[0].iscsi.MaxRecvDataSegmentLength", "type":1, "value":"65536"]]
-Write  .etc.iscsid.all $["comment":"", "file":-1, "kind":"section", "name":"", 
"type":-1, "value":[$["comment":"#\n# Open-iSCSI default configuration.\n# 
Could be located at /etc/iscsid.conf or ~/.iscsid.conf\n#\n", "kind":"value", 
"name":"node.active_cnx", "type":1, "value":"1"], $["comment":"", 
"kind":"value", "name":"node.startup", "type":1, "value":"manual"], 
$["comment":"#node.session.auth.username = dima\n#node.session.auth.password = 
aloha\n", "kind":"value", "name":"node.session.timeo.replacement_timeout", 
"type":1, "value":"120"], $["comment":"", "kind":"value", 
"name":"node.session.err_timeo.abort_timeout", "type":1, "value":"10"], 
$["comment":"", "kind":"value", "name":"node.session.err_timeo.reset_timeout", 
"type":1, "value":"30"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.InitialR2T", "type":1, "value":"No"], 
$["comment":"", "kind":"value", "name":"node.session.iscsi.ImmediateData", 
"type":1, "value":"Yes"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.FirstBurstLength", "type":1, "value":"262144"], 
$["comment":"", "kind":"value", "name":"node.session.iscsi.MaxBurstLength", 
"type":1, "value":"16776192"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.DefaultTime2Wait", "type":1, "value":"0"], 
$["comment":"", "kind":"value", "name":"node.session.iscsi.DefaultTime2Retain", 
"type":1, "value":"0"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.MaxConnections", "type":1, "value":"0"], 
$["comment":"", "kind":"value", "name":"node.cnx[0].iscsi.HeaderDigest", 
"type":1, "value":"None"], $["comment":"", "kind":"value", 
"name":"node.cnx[0].iscsi.DataDigest", "type":1, "value":"None"], 
$["comment":"", "kind":"value", 
"name":"node.cnx[0].iscsi.MaxRecvDataSegmentLength", "type":1, 
"value":"65536"], $["comment":"", "kind":"value", 
"name":"node.session.auth.username", "type":1, "value":"incuser"], 
$["comment":"", "kind":"value", "name":"node.session.auth.password", "type":1, 
"value":"incpass"], $["comment":"", "kind":"value", 
"name":"discovery.sendtargets.auth.authmethod", "type":1, "value":"CHAP"], 
$["comment":"", "kind":"value", "name":"discovery.sendtargets.auth.username", 
"type":1, "value":"outuser"], $["comment":"", "kind":"value", 
"name":"discovery.sendtargets.auth.password", "type":1, "value":"outpass"]]] 
true
-Write  .etc.iscsid nil true
-Return nil
-Write  .etc.iscsid.all $["comment":"", "file":-1, "kind":"section", "name":"", 
"type":-1, "value":[$["comment":"#\n# Open-iSCSI default configuration.\n# 
Could be located at /etc/iscsid.conf or ~/.iscsid.conf\n#\n", "kind":"value", 
"name":"node.active_cnx", "type":1, "value":"1"], $["comment":"", 
"kind":"value", "name":"node.startup", "type":1, "value":"manual"], 
$["comment":"#node.session.auth.username = dima\n#node.session.auth.password = 
aloha\n", "kind":"value", "name":"node.session.timeo.replacement_timeout", 
"type":1, "value":"120"], $["comment":"", "kind":"value", 
"name":"node.session.err_timeo.abort_timeout", "type":1, "value":"10"], 
$["comment":"", "kind":"value", "name":"node.session.err_timeo.reset_timeout", 
"type":1, "value":"30"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.InitialR2T", "type":1, "value":"No"], 
$["comment":"", "kind":"value", "name":"node.session.iscsi.ImmediateData", 
"type":1, "value":"Yes"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.FirstBurstLength", "type":1, "value":"262144"], 
$["comment":"", "kind":"value", "name":"node.session.iscsi.MaxBurstLength", 
"type":1, "value":"16776192"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.DefaultTime2Wait", "type":1, "value":"0"], 
$["comment":"", "kind":"value", "name":"node.session.iscsi.DefaultTime2Retain", 
"type":1, "value":"0"], $["comment":"", "kind":"value", 
"name":"node.session.iscsi.MaxConnections", "type":1, "value":"0"], 
$["comment":"", "kind":"value", "name":"node.cnx[0].iscsi.HeaderDigest", 
"type":1, "value":"None"], $["comment":"", "kind":"value", 
"name":"node.cnx[0].iscsi.DataDigest", "type":1, "value":"None"], 
$["comment":"", "kind":"value", 
"name":"node.cnx[0].iscsi.MaxRecvDataSegmentLength", "type":1, 
"value":"65536"]]] true
-Write  .etc.iscsid nil true
-Return nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-iscsi-client-3.1.23/testsuite/tests/SaveConfig.rb 
new/yast2-iscsi-client-3.1.25/testsuite/tests/SaveConfig.rb
--- old/yast2-iscsi-client-3.1.23/testsuite/tests/SaveConfig.rb 2015-08-11 
15:47:11.000000000 +0200
+++ new/yast2-iscsi-client-3.1.25/testsuite/tests/SaveConfig.rb 1970-01-01 
01:00:00.000000000 +0100
@@ -1,151 +0,0 @@
-# encoding: utf-8
-
-module Yast
-  class SaveConfigClient < Client
-    def main
-      Yast.include self, "testsuite.rb"
-
-      @READ = {
-        "target" => { "tmpdir" => "/tmp" },
-        "etc"    => {
-          "iscsid" => {
-            "all" => {
-              "comment" => "",
-              "file"    => -1,
-              "kind"    => "section",
-              "name"    => "",
-              "type"    => -1,
-              "value"   => [
-                {
-                  "comment" => "#\n" +
-                    "# Open-iSCSI default configuration.\n" +
-                    "# Could be located at /etc/iscsid.conf or 
~/.iscsid.conf\n" +
-                    "#\n",
-                  "kind"    => "value",
-                  "name"    => "node.active_cnx",
-                  "type"    => 1,
-                  "value"   => "1"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.startup",
-                  "type"    => 1,
-                  "value"   => "manual"
-                },
-                {
-                  "comment" => "#node.session.auth.username = 
dima\n#node.session.auth.password = aloha\n",
-                  "kind"    => "value",
-                  "name"    => "node.session.timeo.replacement_timeout",
-                  "type"    => 1,
-                  "value"   => "120"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.session.err_timeo.abort_timeout",
-                  "type"    => 1,
-                  "value"   => "10"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.session.err_timeo.reset_timeout",
-                  "type"    => 1,
-                  "value"   => "30"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.session.iscsi.InitialR2T",
-                  "type"    => 1,
-                  "value"   => "No"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.session.iscsi.ImmediateData",
-                  "type"    => 1,
-                  "value"   => "Yes"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.session.iscsi.FirstBurstLength",
-                  "type"    => 1,
-                  "value"   => "262144"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.session.iscsi.MaxBurstLength",
-                  "type"    => 1,
-                  "value"   => "16776192"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.session.iscsi.DefaultTime2Wait",
-                  "type"    => 1,
-                  "value"   => "0"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.session.iscsi.DefaultTime2Retain",
-                  "type"    => 1,
-                  "value"   => "0"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.session.iscsi.MaxConnections",
-                  "type"    => 1,
-                  "value"   => "0"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.cnx[0].iscsi.HeaderDigest",
-                  "type"    => 1,
-                  "value"   => "None"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.cnx[0].iscsi.DataDigest",
-                  "type"    => 1,
-                  "value"   => "None"
-                },
-                {
-                  "comment" => "",
-                  "kind"    => "value",
-                  "name"    => "node.cnx[0].iscsi.MaxRecvDataSegmentLength",
-                  "type"    => 1,
-                  "value"   => "65536"
-                }
-              ]
-            }
-          }
-        }
-      }
-      TESTSUITE_INIT([@READ, {}, {}], nil)
-
-      Yast.import "IscsiClientLib"
-
-      TEST(lambda { IscsiClientLib.getConfig }, [@READ, {}, {}], nil)
-      TEST(lambda do
-        IscsiClientLib.saveConfig("incuser", "incpass", "outuser", "outpass")
-      end, [
-        @READ,
-        {},
-        {}
-      ], nil)
-      TEST(lambda { IscsiClientLib.oldConfig }, [@READ, {}, {}], nil)
-
-      nil
-    end
-  end
-end
-
-Yast::SaveConfigClient.new.main


Reply via email to