#29305: GET or POST requests outside of the browser to the LiveServerTestCase
server hang
-----------------------------------+--------------------------------------
     Reporter:  Santiago García    |                    Owner:  nobody
         Type:  Bug                |                   Status:  new
    Component:  Testing framework  |                  Version:  1.11
     Severity:  Normal             |               Resolution:
     Keywords:  Test               |             Triage Stage:  Unreviewed
    Has patch:  0                  |      Needs documentation:  0
  Needs tests:  0                  |  Patch needs improvement:  0
Easy pickings:  0                  |                    UI/UX:  0
-----------------------------------+--------------------------------------
Description changed by Santiago García:

Old description:

> We have an integration test where we start two separate Django processes
> and the second process makes a POST request to the first process with the
> requests library. This testcase broke once we upgraded to Django 1.11,
> while it still worked in Django 1.10.
>
> To reproduce the issue:
>
> - Create a simple Django app.
> - Install selenium and requests
> - Add a testcase like so:
>

>   {{{#!python
> import time
>
> from django.contrib.staticfiles.testing import StaticLiveServerTestCase
> from django.urls import reverse
> from selenium import webdriver
>

> class TestExample(StaticLiveServerTestCase):
>     def test_example(self):
>         driver = webdriver.Chrome()
>         driver.get(self.live_server_url + reverse('admin:index'))
>         # wait "forever"
>         time.sleep(60 * 60 * 24)
>   }}}
>
> I.e it just opens the admin page, then waits for 24 hours. In a Python
> console, type the following:
>
>   {{{#!python
> import requests
> requests.get('http://localhost:47256/admin') # replace 47256 with
> whatever port number the LiveServerTestCase picked
>   }}}
>
> and you will see that the request hangs indefinitely. Interestingly, it
> sometimes helps to press refresh in the Chrome window spawned by
> Selenium.

New description:

 We have an integration test where we start two separate Django processes
 and the second process makes a POST request to the first process with the
 requests library. This testcase broke once we upgraded to Django 1.11,
 while it still worked in Django 1.10.

 To reproduce the issue:

 - Create a simple Django app.
 - Install selenium and requests
 - Add a testcase like so:


   {{{#!python
 import time

 from django.contrib.staticfiles.testing import StaticLiveServerTestCase
 from django.urls import reverse
 from selenium import webdriver


 class TestExample(StaticLiveServerTestCase):
     def test_example(self):
         driver = webdriver.Chrome()
         driver.get(self.live_server_url + reverse('admin:index'))
         # wait "forever"
         time.sleep(60 * 60 * 24)
   }}}

 I.e it just opens the admin page in Chrome, then waits for 24 hours. In a
 Python console, type the following:

   {{{#!python
 import requests
 requests.get('http://localhost:47256/admin') # replace 47256 with whatever
 port number the LiveServerTestCase picked
   }}}

 and you will see that the request hangs indefinitely. Interestingly, it
 sometimes helps to press refresh in the Chrome window spawned by Selenium.

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/29305#comment:3>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/075.f8d7a9a1f5e5014093da35bf2e80b409%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to