diff --git a/tests/examples/seek/seek.c b/tests/examples/seek/seek.c
--- a/tests/examples/seek/seek.c
+++ b/tests/examples/seek/seek.c
@@ -1597,6 +1628,52 @@ failed:
 }
 
 static void
+go_end_cb (GtkButton * button, gpointer data)
+{
+  GstStateChangeReturn ret;
+  g_static_mutex_lock (&state_mutex);
+
+  gtk_statusbar_pop (GTK_STATUSBAR (statusbar), status_id);
+  g_print ("GO end \n");
+  gst_element_seek_simple (pipeline, GST_FORMAT_TIME,
+      (GstSeekFlags) (GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE), duration);
+  ret = gst_element_set_state (pipeline, GST_STATE_PAUSED);
+  switch (ret) {
+    case GST_STATE_CHANGE_FAILURE:
+      goto failed;
+    case GST_STATE_CHANGE_NO_PREROLL:
+      is_live = TRUE;
+      break;
+    default:
+      break;
+  }
+
+  state = GST_STATE_PAUSED;
+  gtk_statusbar_push (GTK_STATUSBAR (statusbar), status_id, "Paused");
+  g_static_mutex_unlock (&state_mutex);
+
+  return;
+
+failed:
+  {
+    g_static_mutex_unlock (&state_mutex);
+    g_print ("GO END: PAUSE failed\n");
+    gtk_statusbar_push (GTK_STATUSBAR (statusbar), status_id,
+        "Pause failed while go end");
+  }
+}
+
+static void
+dump_dot_cb (GtkButton * button, gpointer data)
+{
+  GST_DEBUG ("GST_DEBUG_DUMP_DOT_DIR=%s", g_getenv ("GST_DEBUG_DUMP_DOT_DIR"));
+  GST_DEBUG ("pipeline = 0x%p, data=0x%p", pipeline, data);
+
+  GST_DEBUG_BIN_TO_DOT_FILE (GST_BIN (pipeline), GST_DEBUG_GRAPH_SHOW_ALL,
+      "pipeline");
+}
+
+static void
 accurate_toggle_cb (GtkToggleButton * button, GstPipeline * pipeline)
 {
   accurate_seek = gtk_toggle_button_get_active (button);
@@ -2616,7 +2696,8 @@ main (int argc, char **argv)
 {
   GtkWidget *window, *hbox, *vbox, *panel, *expander, *pb2vbox, *boxes,
       *flagtable, *boxes2, *step;
-  GtkWidget *play_button, *pause_button, *stop_button, *shot_button;
+  GtkWidget *play_button, *pause_button, *stop_button, *shot_button,
+      *go_end_button, *dot_button;
   GtkWidget *accurate_checkbox, *key_checkbox, *loop_checkbox, *flush_checkbox;
   GtkWidget *scrub_checkbox, *play_scrub_checkbox;
   GtkWidget *rate_label, *volume_label;
@@ -2699,6 +2779,8 @@ main (int argc, char **argv)
   play_button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY);
   pause_button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PAUSE);
   stop_button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_STOP);
+  go_end_button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_NEXT);
+  dot_button = gtk_button_new_with_label ("Dot");
 
   /* seek flags */
   accurate_checkbox = gtk_check_button_new_with_label ("Accurate Seek");
@@ -2896,6 +2977,8 @@ main (int argc, char **argv)
   gtk_box_pack_start (GTK_BOX (hbox), play_button, FALSE, FALSE, 2);
   gtk_box_pack_start (GTK_BOX (hbox), pause_button, FALSE, FALSE, 2);
   gtk_box_pack_start (GTK_BOX (hbox), stop_button, FALSE, FALSE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), go_end_button, FALSE, FALSE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), dot_button, FALSE, FALSE, 2);
   gtk_box_pack_start (GTK_BOX (hbox), flagtable, FALSE, FALSE, 2);
   gtk_table_attach_defaults (GTK_TABLE (flagtable), accurate_checkbox, 0, 1, 0,
       1);
@@ -2929,6 +3012,11 @@ main (int argc, char **argv)
       pipeline);
   g_signal_connect (G_OBJECT (stop_button), "clicked", G_CALLBACK (stop_cb),
       pipeline);
+  g_signal_connect (G_OBJECT (go_end_button), "clicked", G_CALLBACK (go_end_cb),
+      pipeline);
+  g_signal_connect (G_OBJECT (dot_button), "clicked", G_CALLBACK (dump_dot_cb),
+      pipeline);
+
   g_signal_connect (G_OBJECT (accurate_checkbox), "toggled",
       G_CALLBACK (accurate_toggle_cb), pipeline);
   g_signal_connect (G_OBJECT (key_checkbox), "toggled",
