Re: [AUTOTEST]telnet login fails in win2k8 DC 64. here are debug and other info

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

 



----- "sudhir kumar" <smalikphy@xxxxxxxxx> wrote:

> On Tue, Aug 4, 2009 at 5:01 PM, Michael Goldish<mgoldish@xxxxxxxxxx>
> wrote:
> > Maybe the problem is related to how you implemented TAP support in
> > your tree.  You're obviously not using user mode networking because
> I do not understand what do you mean here. Yes the setup is a tap
> network and I can login into the guest using the same command
> manually. Here is the output
> # telnet -l Administrator 10.0.99.100 23
> Trying 10.0.99.100...
> Connected to ichigo-dom100.linuxperf9025.net (10.0.99.100).
> Escape character is '^]'.
> Welcome to Microsoft Telnet Service
> 
> password:
> 
> *===============================================================
> Microsoft Telnet Server.
> *===============================================================
> C:\Users\Administrator>
> 
> > the guest's IP address is 10.0.99.100.  I'm not sure exactly what
> the
> > problem is, so can you print the connection command in
> remote_login()?
> > Add something like 'print "COMMAND: " + command' at the top of the
> > function, and that might help us figure out what's wrong.
> Here is the command:
> 23:35:13 INFO | COMMAND: telnet -l Administrator 10.0.99.100 23
> 
> So on further inspection the problem limits to that
> read_nonblocking()
>  is reading only 3 lines. So the culprit may be the following code
>         data = ""
>         while True:
>             r, w, x = select.select([self.fd], [], [], timeout)
>             if self.fd in r:
>                 try:
>                     data += os.read(self.fd, 1024)
>                 except OSError:
>                     return data
>             else:
>                 return data
> in this function. Since all the 5 lines(including last empty line) do
> not appear in one go it is possible that select() returns before the
> whole lines have been writen to the file pointed by fd and read()
> reads only those 3 lines(which looks to be less likely). I observe a
> slight delay in printing the lines. First 3 lines are printed in one
> go and the last two lines are printed after a very small(< 1 sec)
> time. What do you say? I will try by putting one more call to read()
> and see what happens.

I don't think that'll help because it's OK to get 3 lines, wait a little,
and then get 2 more lines.  read_until_output_matches() calls
read_nonblocking() repeatedly to read output from the Telnet process, so
pauses in output from the process are OK.
I thought it was a good idea to print the login command because although
the IP is OK, maybe the port isn't, and in the logs we don't see what
port ssh_login() is actually trying to connect to.

> >
> > ----- Original Message -----
> > From: "sudhir kumar" <smalikphy@xxxxxxxxx>
> > To: "Michael Goldish" <mgoldish@xxxxxxxxxx>
> > Cc: "Lucas Meneghel Rodrigues" <mrodrigu@xxxxxxxxxx>, "Ryan Harper"
> <ryanh@xxxxxxxxxx>, "kvm-devel" <kvm@xxxxxxxxxxxxxxx>
> > Sent: Tuesday, August 4, 2009 9:43:42 AM (GMT+0200) Auto-Detected
> > Subject: Re: [AUTOTEST]telnet login fails in win2k8 DC 64. here are
> debug and  other info
> >
> > For making it more clear here are the timoeout debug prints
> >
> > 14:31:04 INFO | ('DEBUG: timeout in read_until_output_matches =%d',
> 30)
> > 14:31:04 INFO | ('DEBUG: internal_timeout in
> read_until_output_matches
> > =%d', 3.5)
> > {sorry with little syntax typo :(  }
> >
> > On Tue, Aug 4, 2009 at 12:12 PM, sudhir kumar<smalikphy@xxxxxxxxx>
> wrote:
> >> On Tue, Aug 4, 2009 at 11:23 AM, Michael
> Goldish<mgoldish@xxxxxxxxxx> wrote:
> >>> Looks like there really are only 3 lines to read.
> >>> Telnet is printing those lines, not windows. It's just indicating
> >>> that it successfully connected. Windows is saying nothing.
> >>>
> >>> This is a little weird, because:
> >>> - It can happen when the telnet server isn't running at all,
> >>>  but it seemed to be running fine when you connected manually.
> >>> - It can happen when trying to connect to the wrong port, but I
> >>>  see you set the port to 23.
> >>>
> >>> It can also happen due to the short default timeout of 10
> seconds.
> >>> Windows can take longer than that to send something.
> >> My manual observation also says that it does not take that much.
> >>> Are you sure you increased the timeout? You only sent a log of 4
> >> I increased the timeout and did not send the complete log. here
> are
> >> the start and end of the complete log
> >>
> >> 12:26:44 INFO | Waiting for guest to be up...
> >> 12:26:44 INFO | DEBUG: in ssh_login ssh_prompt =
> C:\Users\Administrator>
> >> 12:26:44 INFO | DEBUG: in ssh_login timeout = 20
> >> 12:26:47 INFO | DEBUG: Printing data read by read_nonblocking from
> output:
> >> 12:26:47 INFO | DEBUG: data read from output is Trying
> 10.0.99.100...
> >> 12:26:47 INFO | telnet: connect to address 10.0.99.100: No route to
> host
> >> 12:26:47 INFO | telnet: Unable to connect to remote host: No route
> to host
> >>
> >> <snip>
> >>
> >> 12:30:48 INFO | DEBUG: Printing accumulated data read from output
> done.
> >> 12:30:48 INFO | DEBUG: Printing data after filter:
> >> 12:30:48 INFO | DEBUG: filtered data is Escape character is '^]'.
> >> 12:30:48 INFO | DEBUG: Printing data after filter done:
> >> 12:30:50 ERROR| Test failed: Could not log into guest
> >>
> >>
> >>> seconds (starting at 12:27:25). How long does
> >>> read_until_output_matches() wait before it gives up?
> >>
> >> Here is the complete code flow with parameters.
> >> in kvm_tests.py
> >>    session = kvm_utils.wait_for(vm.ssh_login, 240, 0, 2)
> >> which calls in kvm_utils.py
> >>        output = func()
> >> This calls ssh_login() in kvm_vm.py with default parameters and
> the
> >> default def is changed to have timeout 20 second instead of 10
> >> seconds.
> >>    def ssh_login(self, timeout=20):
> >> This calls the telnet which calls remote_login() in kvm_utils.py
> >>        if use_telnet:
> >>            session = kvm_utils.telnet(address, port, username,
> password,
> >>                                       prompt, timeout)
> >> So timeout is 20 now. This calls remote_login
> >>    return remote_login(command, password, prompt, "\r\n", timeout)
> >> PS: A dumb Question: Does "\r\n" have to do something with the
> failure ?
> >> So timeout is still 20. The next call is
> >>    while True:
> >>        (match, text) = sub.read_until_last_line_matches(
> >>                [r"[Aa]re you sure", r"[Pp]assword:\s*$",
> r"^\s*[Ll]ogin:\s*$",
> >>                 r"[Cc]onnection.*closed",
> r"[Cc]onnection.*refused", prompt],
> >>                 timeout=timeout, internal_timeout=3.5)
> >> which calls to
> >>        return self.read_until_output_matches(patterns,
> self.get_last_line,
> >>                                              timeout,
> internal_timeout,
> >>                                              print_func)
> >>
> >> Hence this function waits for 20 seconds in each try. i think that
> is
> >> good enough.
> >>
> >> In my manual observation there is no delay between the above all
> the
> >> lines printed. So this should not be an issue. I can bet that there
> is
> >> not even a delay of 2 secs between these two lines:
> >>  Escape character is '^]'.
> >>  Welcome to Microsoft Telnet Service
> >>
> >> But yes there is a very small delay(looks < 1 second), which should
> be
> >> taken care by increased internal_timeout which i have increased to
> >> around 3 seconds.
> >>
> >>>
> >>> ----- Original Message -----
> >>> From: "sudhir kumar" <smalikphy@xxxxxxxxx>
> >>> To: "kvm-devel" <kvm@xxxxxxxxxxxxxxx>
> >>> Cc: "Lucas Meneghel Rodrigues" <mrodrigu@xxxxxxxxxx>, "Michael
> Goldish" <mgoldish@xxxxxxxxxx>, "Ryan Harper" <ryanh@xxxxxxxxxx>
> >>> Sent: Tuesday, August 4, 2009 8:06:32 AM (GMT+0200) Auto-Detected
> >>> Subject: [AUTOTEST]telnet login fails in win2k8 DC 64. here are
> debug and  other info
> >>>
> >>> Hi,
> >>> I am seeing a telnet failure in autotest to a win2k8 DC 64 bit
> guest.
> >>> I have tried some debugging and came to a conclusion that
> >>> read_nonblocking() is reading only 3 lines. let me first print
> the
> >>> output of manual login
> >>>
> >>>  # telnet -l Administrator 10.0.99.100 23
> >>> Trying 10.0.99.100...
> >>> Connected to ichigo-dom100.linuxperf9025.net (10.0.99.100).
> >>> Escape character is '^]'.
> >>> Welcome to Microsoft Telnet Service
> >>>
> >>> password:
> >>>
> >>> *===============================================================
> >>> Microsoft Telnet Server.
> >>> *===============================================================
> >>> C:\Users\Administrator>
> >>>
> >>> Now autotest only reads the first 3 lines(upto Escape.....). It
> seems
> >>> windows is doing something nasty here. I have put some debug
> prints in
> >>> the code and here is the output. let me first put the code
> snippet
> >>> from kvm_utils.py with added debug prints.
> >>>
> >>>    def read_until_output_matches(self, patterns,
> filter=lambda(x):x,
> >>>                                  timeout=30.0,
> internal_timeout=3.0,
> >>>                                  print_func=None):
> >>> <snip>
> >>>        end_time = time.time() + timeout
> >>>        while time.time() < end_time:
> >>>            # Read data from child
> >>>            newdata = self.read_nonblocking(internal_timeout)
> >>>            print("DEBUG: Printing data read by read_nonblocking
> from output:")
> >>>            print("DEBUG: data read from output is %s" % newdata)
> >>>            print("DEBUG: Printing data read by read_nonblocking
> from
> >>> output done.")
> >>>            # Print it if necessary
> >>>            if print_func and newdata:
> >>>                map(print_func, newdata.splitlines())
> >>>            data += newdata
> >>>            print("DEBUG: Printing accumulated data read from
> output:")
> >>>            print("DEBUG: accumulated data read from output is %s"
> % data)
> >>>            print("DEBUG: Printing accumulated data read from
> output done.")
> >>>
> >>>            done = False
> >>>            # Look for patterns
> >>>            print("DEBUG: Printing data after filter:")
> >>>            print("DEBUG: filtered data is %s" % filter(data))
> >>>            print("DEBUG: Printing data after filter done:")
> >>>            match = self.match_patterns(filter(data), patterns)
> >>>            if match != None:
> >>>                done = True
> >>>            # Check if child has died
> >>>            if self.poll() != None:
> >>>                logging.debug("Process terminated with status %d",
> self.poll())
> >>>                done = True
> >>>            # Are we done?
> >>>            if done: break
> >>> <snip>
> >>>
> >>> Here is the output once the guest comes up.
> >>>
> >>> 12:27:25 INFO | DEBUG: Printing data read by read_nonblocking from
> output:
> >>> 12:27:25 INFO | DEBUG: data read from output is Trying
> 10.0.99.100...
> >>> 12:27:25 INFO | Connected to ichigo-dom100.linuxperf9025.net
> (10.0.99.100).
> >>> 12:27:25 INFO | Escape character is '^]'.
> >>> 12:27:25 INFO |
> >>> 12:27:25 INFO | DEBUG: Printing data read by read_nonblocking from
> output done.
> >>> 12:27:25 INFO | DEBUG: Printing accumulated data read from
> output:
> >>> 12:27:25 INFO | DEBUG: accumulated data read from output is
> Trying
> >>> 10.0.99.100...
> >>> 12:27:25 INFO | Connected to ichigo-dom100.linuxperf9025.net
> (10.0.99.100).
> >>> 12:27:25 INFO | Escape character is '^]'.
> >>> 12:27:25 INFO |
> >>> 12:27:25 INFO | DEBUG: Printing accumulated data read from output
> done.
> >>> 12:27:25 INFO | DEBUG: Printing data after filter:
> >>> 12:27:25 INFO | DEBUG: filtered data is Escape character is '^]'.
> >>> 12:27:25 INFO | DEBUG: Printing data after filter done:
> >>> 12:27:29 INFO | DEBUG: Printing data read by read_nonblocking from
> output:
> >>> 12:27:29 INFO | DEBUG: data read from output is
> >>> 12:27:29 INFO | DEBUG: Printing data read by read_nonblocking from
> output done.
> >>> 12:27:29 INFO | DEBUG: Printing accumulated data read from
> output:
> >>> 12:27:29 INFO | DEBUG: accumulated data read from output is
> Trying
> >>> 10.0.99.100...
> >>> 12:27:29 INFO | Connected to ichigo-dom100.linuxperf9025.net
> (10.0.99.100).
> >>> 12:27:29 INFO | Escape character is '^]'.
> >>> 12:27:29 INFO |
> >>> 12:27:29 INFO | DEBUG: Printing accumulated data read from output
> done.
> >>> 12:27:29 INFO | DEBUG: Printing data after filter:
> >>> 12:27:29 INFO | DEBUG: filtered data is Escape character is '^]'.
> >>> 12:27:29 INFO | DEBUG: Printing data after filter done:
> >>>
> >>> and so on... timeout elapses and test fails.
> >>>
> >>> I am not able to find out why read_nonblocking() is reading only
> 3
> >>> lines. I have tried increasing the timeouts and internal_timeouts
> as
> >>> well. But no luck.
> >>>
> >>> Here is how my kvm_tests.cfg looks like.
> >>> # colorful prompt, so migration_test_command will fail, try with
> telnet
> >>>                ssh_prompt = "C:\Users\Administrator>"
> >>>                ssh_port = 23
> >>>                use_telnet = yes
> >>> Any clues ?
> >>>
> >>> --
> >>> Sudhir Kumar
> >>>
> >>
> >>
> >>
> >> --
> >> Sudhir Kumar
> >>
> >
> >
> >
> > --
> > Sudhir Kumar
> >
> 
> 
> 
> -- 
> Sudhir Kumar
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux