Roger Federer completed the men's Australian Open semi-final line-up after coming through a five set epic with Jo-Wilfried Tsonga on Wednesday.